상속

김민성·2022년 7월 14일
0

Java

목록 보기
14/47
post-thumbnail

상속

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

  • 상속의 목적

    • 기존에 선언된 클래스의 멤버를 다른 클래스에서 사용하고자 할 때
    • 클래스들의 공통 요소들을 부모로 묶은 후 상속시켜 사용하고자 할 때
  • 상속의 구조

    class A {

    ​ A의 멤버

    }

    class B extends A{

    ​ B의 멤버

    }

    이 때 B가 A에게 상속받았다고 하며, A가 부모(조상) 클래스, B가 자식(자손) 클래스라고 한다.

  • 생성자와 초기화 블럭은 상속되지 않고 멤버만 상속된다.

  • 여러 세대에 걸쳐 상속될 수 있으며, 다중상속은 허용되지 않는다.

  • 자식 클래스는 부모클래스의 모든 멤버를 상속받는다. 따라서 B b = new B(); 로 B의 객체를 생성하면 객체 b는 A의 멤버와 B의 멤버 둘 다 가지고 있다.

    public class Main {
    	public static void main(String[] args) {
    		B b = new B();
    		b.name = "자바";
    		b.age = 20;
    		// B가 A를 상속받고 있으므로 A의 멤버인 name과 age 초기화 가능
    		b.ageUp();				
    		System.out.println(b.age);		// 21
    		// A의 메소드인 ageUp도 사용 가능하다.
    		b.ageDown();
    		System.out.println(b.age);		// 20
    		// B에 있는 메소드 ageDown도 사용 가능하다
    	}
    }
    
    class A {
    	String name;
    	int age;
    	
    	int ageUp() {
    		return ++age;
    	}
    }
    
    class B extends A {
    	int ageDown() {
    		return --age;
    	}
    }

    위의 코드에서 B 클래스가 A 클래스를 상속받고 있다. 따라서 main 메서드에서 B b = new B(); 를 통해 B타입의 객체만 만들어도 A의 멤버들을 사용할 수 있다.

  • Object 클래스

    Object 클래스는 모든 클래스의 최상위 부모 클래스이다. 상속을 받지 않는것 처럼 보이는 클래스들도 컴파일러가 자동으로 extends Object 를 추가하여 최상위 클래스인 Object 클래스로부터 상속받고 있는 것이다. 따라서 Object 클래스에 정의된 특정 메서드들을 따로 정의하지 않고 사용할 수 있다.

0개의 댓글