java,jsp,spring/java

java 객체 지향

프루트 2022. 7. 23. 09:15

객체 지향

  • 캡슐화
    • 외부에서 객체 접근하는데 있어서 정보를 숨기고 객체의 연산을 통해서만 접근이 가능하게함
     

  • 상속
    • extends가 있으면 상속 받은 클래스 (자식) -> 부모의 속성과 메소드를 가져옴
     

  • 다형성
    • 메소드를 상속받아 각 객체가 출력을 다르게 구현 가능
     

  • 절차 지향 vs 객체 지향

클래스와 객체

클래스 : 사람 속성 : 이름, 직업, 나이, 성별 … 메소드 : 밥 먹기, 잠자기, 말하기, …
객체 : A > 이름 : A , 직업 : 의사, 나이 : 30, 성별 : 여 / 메소드
객체 : B > 이름 : B , 직업 : 교수, 나이 : 46, 성별 : 남 / 메소드

  • 객체 생성과 접근

public class Circle {
	int radius;
	String name;
	
	public Circle() {}  // 생성자(클래스 이름과 같음) 메소드

	public double getArea() {
		return 3.14*radius*radius;
	}
	public static void main(String[] args) {
		Circle pizza; // pizza : 참조 변수
		pizza = new Circle(); // 객체 생성
		
		pizza.radius = 10;
		pizza.name = "자바"; // 속성값 입력
		
		double area = pizza.getArea();
		System.out.println(area);

		Circle donut = new Circle();
		
		donut.radius = 2;
		donut.name = "도넛";
		
		area = donut.getArea();
		System.out.println(donut.name+"의 면적은 "+area);
	}
}

생성자

  • 기본 객체 ➡️ 생성자(초기값 설정을 주로 함) ➡️ 초기화된 객체
  • 특징
    • 클래스 이름과 같아야 함
    • 오버로딩 : 매개변수를 다르게 해서 생성자 여러개를 만들 수 있음
    • 객체 생성 시 new 연산자로 호출
    • 리턴 타입 없음
  • 기본 생성자 : 매개변수가 없음 ex) public Circle() {} → 생성하지 않아도 컴파일러가 기본으로 생성해 호출 가능 단, 기본 생성자가 아닌 생성자가 있을 경우 자동으로 생성해 주지 않음

this 레퍼런스

  • 객체 자신을 메소드에 전달하거나 리턴하기 위해 사용
  • 객체 생성자 내에서 사용할 경우, 다른 생성자를 호출
  • 매개 변수와 객체 자신이 가지고 있는 변수의 이름이 같은 경우 이를 구분하기 위해 자신의 변수에 this를 사용

  • 예시
    • Circle(1) > 생성자 호출하면서 매개변수(반지름) 바로 입력
    • ob1.set(4) > set 메소드 호출 매개변수 1->4 입력
public class Book2 {
	String title;
	String author;
	void show( ) {
		System.out.println(title+" @@@ "+author); // 메인 메소드에서 show 메소드를 호출했기 때문에
                                              // title과 author에 입력된 값이 출력됨
	}
	public Book2() {
		this("",""); // 매개변수가 2개인 생성자를 호출하고 속성에 빈값을 입력
	}
	public Book2(String title) {
		this(title,"작자미상"); // 매개변수가 2개인 생성자 호출
                           // title에는 매개변수로 입력된 값 입력 author은 작자미상 입력
	}
	public Book2(String title, String author) {
		this.title = title; this.author = author;
	}
	public static void main(String[] args) {
		Book2 littlePrince = new Book2("어린왕자","생텍쥐페리"); 
		Book2 loveStory = new Book2("춘향전");
		Book2 emptyBook = new Book2();
		littlePrince.show(); // 어린왕자 @@@ 생텍쥐페리
		loveStory.show(); // 춘향전 @@@ 작자미상
		emptyBook.show(); // @@@
	}
}

this() : 생성자 호출

  • 사용 실패 예
public Book() {
	System.out.println("생성자가 호출되었음");
	this(null, null, 0);}
// 메소드에 this()가 올 경우 첫번째 줄에 있어야함
// 의미 : 매개변수가 3개인 생성자 호출