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개인 생성자 호출