[Java] OOP_상속(Inheritance), 상속과 포함, 단일상속

jeong·2021년 5월 30일
0

Java 자바

목록 보기
17/28

상속(Inheritance), 상속과 포함, 단일상속

상속(Inheritance)

기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것

class 자식클래스 extends 부모클래스 {
	//...
}
  • 자식은 부모의 모든 멤버를 상속받는다(생성자, 초기화블럭 제외)
  • 자식의 멤버갯수는 부모보다 적을 수 없다(같거나 많아야함)
  • 자손의 변경은 조상에 영향 미치지 않는다
class Parent {
	int age;
}

class Child extends Parent {
	void play() { //새로운 메소드를 추가해도 Parent에 영향 주지 않음 
    	System.out.println("놀자!");
    }
}

//class Parent는 멤버 1개
//class Child는 play멤버 1개+상속받은 Parent의 멤버 1개 = 2개 

포함(Composite)

클래스의 멤버로 참조변수를 선언하는 것

  • 한 클래스의 멤버변수로 다른 클래스를 선언하는 것
  • 작은 단위의 클래스를 먼저 만들고 작은 클래스들을 조합하여 하나의 커다란 클래스를 만든다.
class Circle {
	int x; //원점의 x좌표
    int y; //원점의 y좌표
    int r; // 반지름(radius)
}

//윗 내용 포함 관계로 작성하기 : 
class Circle { //Circle이 Point를 포함
	Point c=new Point(); //원점
    int r; // 반지름(radius)
}

클래스 간의 관계 결정하는 방법

  • 상속관계 : A는 B이다.(is-a)
  • 포함관계 : A는 B를 가지고 있다.(has-a)
    문장 2개를 만들어보고 둘 중에 어느쪽이 자연스러운지 보기
//원(Circle)은 점(Point)을 가지고 있다. - 포함
class Circle {
	Point c=new Point();
    int r;
}

//원(Circle)은 점(Point)이다. - 상속
class Circle extends Point {
	int r;
}
  • 가능한 많은 관계를 맺어주어 재사용성 높이고 관리가 쉽다

단일상속(Single Inheritance)

하나의 부모로부터만 상속받을 수 있다.

  • java는 단일상속만을 허용
  • 비중이 높은 클래스 하나만 상속관계로 하고, 나머지는 포함관계로 처리한다.
class TvDvd extends Tv { //상속관계 
	 //나머지들은 포함
	DVD dvd=new Dvd();
    
    void play() {
    	dvd.play();
    }
    
    void stop() {
    	dvd.stop();
    }
    
    void rew() {
    	dvd.rew();
    }
    
    void ff() {
    	dvd.ff();
    }
}

Object클래스

모든 클래스의 최고조상

  • 조상이 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
  • 상속 최상위에는 Object클래스가 위치함
  • 모든 클래스는 Object클래스에 정의된 11개의 메소드를 상속받는다. - toString(), equals(Object obj), hashCode(),...
profile
배우는 초보개발자

0개의 댓글