객체지향의 4요소 중 하나인 상속에 대한 강의를 들었다.
상속의 정의는 "연관된 일련의 클래스들에 대해서 공통적인 규약을 정의하는 것" 이다.
상속을 하고자 할 때는 extends 키워드를 사용하여 진행한다.
class man {
String name;
public void tellMyName() {
System.out.println("My name is" + name);
}
}
class workman extends man {
String job;
String address;
public void introduceMyself() {
System.out.println("My name is" + name);
System.out.println("My job is" + job);
System.out.println("My E-main address is" + address);
}
}
man 클래스를 상속한 workman 클래스에서 name 변수를 선언하지 않아도 접근이 가능함
변수뿐만 아니라 man 클래스의 메소드인 tellMyName()도 workman 클래스에서 사용 가능하다.
- 단 Private으로 접근 레벨이 지정되면 불가능함.
상속의 대상 클래스 - 상속을 한 클래스를 지칭하는 명칭
- 상위클래스 - 하위클래스
- 부모클래스 - 자식클래스
상속의 개념과는 연관이 없지만 좋은 코드를 위한 원칙으로서 각 클래스의 변수들은 스스로의 생성자를 통해서 초기화 되는 것이 바람직하다.
- 하위 클래스의 생성자를 통해서 상위 클래스의 변수를 초기화하는 경우, 해당 원칙에 위배됨
- super 키워드
- 상위 클래스의 생성자를 호출하는 키워드
class man {
String name;
public man(String name) {
this.name = name;
}
public void tellMyName() {...}
}
class workman extends man {
String job;
String address;
public workman() {
super("none");
this.job = "none";
this.address = "none";
}
public workman(String name, String job, String address) {
super(name);
this.job = job;
this.address = address;
}
public void introduceMyself() {...}
}
상속에 대해서 주의할 점
- 자바는 단일 상속만 지원한다.
- 하나의 클래스는 하나의 클래스에 대해서만 상속 가능하다.
- Static 변수, 메소드의 경우 상속 안된다.
'프로그래밍 > Java' 카테고리의 다른 글
Java - 상속 (3) (0) | 2020.07.08 |
---|---|
Java - 상속 (2) (0) | 2020.07.06 |
Java - 콘솔 출력과 입력 (0) | 2020.06.29 |
Java - 메소드 오버로딩과 String 클래스 (0) | 2020.06.28 |
Java - 정보 은닉과 캡슐화, 클래스 변수와 메소드 (0) | 2020.06.26 |