Day05 JAVA Studying
by 효기’s
상속
* 자바는 100프로 상속구조.
* 클래스명 extends 상속받는 클래스명.
* 상속 해주는 클래스 super class
* 상속 받는 클래스 sub class
* 코드의 확장. 재사용성, 유지보수의 효율을 높인다.
* is ~ A 관계
* 객체간 다중상속을 허용하지 않는다. 단일상속만 가능
* 명확하다.
*
* 오버라이딩 -> 다형성
*
* 부모의 메소드중 하나를 자식클래스에서 재정의 (부모에게 상속받은게 맘에 안들때 바꾸고싶을때 사용)
* 부모의 내용을 변경, 추가해서 사용할수 있게 해준다.
예제
/*
* 상속
* 자바는 100프로 상속구조.
* 클래스명 extends 상속받는 클래스명.
* 상속 해주는 클래스 super class
* 상속 받는 클래스 sub class
* 코드의 확장. 재사용성, 유지보수의 효율을 높인다.
* is ~ A 관계
* 객체간 다중상속을 허용하지 않는다. 단일상속만 가능
* 명확하다.
*
* 오버라이딩 -> 다형성
*
* 부모의 메소드중 하나를 자식클래스에서 재정의 (부모에게 상속받은게 맘에 안들때 바꾸고싶을때 사용)
* 부모의 내용을 변경, 추가해서 사용할수 있게 해준다.
*
*/
package test;
class Inher{
// 인스턴스 변수 a, b
private int a;
private int b;
// 기본 생성자
public Inher() {
System.out.println("super class");
}
// 인자를 받는 생성자
public Inher(int i) {
System.out.println("super11 class");
}
// getter setter
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
public class study31_0707 extends Inher{
// 기본 생성자
public study31_0707() {
//super(); //=> 부모의 생성자 호출, subclass의 생성자함수의 첫번째라인에 항상 존재
super(10);// 인자를 받는 생성자 호출
System.out.println("sub class");
}
public static void main(String[] args) {
study31_0707 in = new study31_0707();
in.setA(100);
System.out.println(in.getA());
}
}
package test;
class AC {
private int a; // 인스턴스 변수 a
public AC(int a) { // 생성자 (constructor)
this.a = a;
}
// getter (값을 가져온다.)
public int getA() {
return a;
}
// 인스턴스 메서드
public void disp() {
System.out.println("하하하");
}
}
class B extends AC{
private int b;
public B(int a, int b) {
super(a); // ac 생성자 호출
this.b = b; // b를 초기화 (변수 구분할때)
}
public int getB() { // 메서드
return b; // 인스턴스 변수 b
}
}
class C extends B{
private int c; //정수형 인스턴스 변수 c
public C(int a, int b, int c) {
super(a,b); // 생성자를 호출
this.c = c; // c를 초기화 this는 변수 구분때문에
}
public int getC() {
return c; // 인스턴스 변수 c의 값을 반환
}
@Override // 부모클래스의 disp()메서드를 오버라이딩 한다.
public void disp() {
super.disp();
System.out.println("호호호");
}
}
public class study32 {
public static void main(String[] args) {
//동적 바인딩
C cc = new C(1,2,3); //정적 바인딩: 부모의 레퍼런스로 자식을 사용
System.out.println(cc.getA());
System.out.println(cc.getB());
System.out.println(cc.getC());
cc.disp();
}
}
'Studying > JAVA' 카테고리의 다른 글
Day07 JAVA Studying (19) | 2023.07.11 |
---|---|
Day06 JAVA Studying (1) | 2023.07.10 |
Day04 JAVA Studying (0) | 2023.07.06 |
Day03 JAVA Studying (0) | 2023.07.05 |
Day02 JAVA Studying (0) | 2023.07.04 |
블로그의 정보
감성 개발자 효기
효기’s