Java 상속(Extends)

김동규·2022년 11월 7일

JAVA

목록 보기
28/38

상속이란?

  • 상속이란 기존 클래스의 멤버 함수와 멤버 변수를 물려받아 새로운 클래스를 구성하는 것.
  • 이러한 상속은 캡슐화,추상화,다형성과 더불어 객체 지향프로그래밍을 구성하는 득징이다.

상속의 장점

  • 기존 클래스의 변수와 코드를 재사용할수있어 개발시간이 단축된다.
  • 먼저 작성된 검증 프로그램 재사용으로 신뢰성있는 프로그램을 개발할수있다.
  • 계층 분류및 관리가 가능하여 유지보수에 용이하다.

부모 클래스와 자식클래스간 다른용어 this,super

앞에서 살펴봤듯이 this는 자기자신의 주소값을 가지고있는반면 super는 부모의 주소값을 가지게 된다.
만약 부모의 생성자를 사용해야하는경우에는 super()생성자를 이용하여 접근이가능하다.

하지만 실제적인 메모리 상에 올라가는 구조를 보자면 아래와같다.

class Man {//3.부모에있는 멤버변수,멤버메소드 메모리에올림
    private String name;

    public Man(String name) {
       this.name = name;
    }

    public void tellYourName() {
        System.out.println("My name is " + name);
    }
}

class BusinessMan extends Man {//2.호출받음 하지만 상속받고있음 바로 부모쪽으로 올라가 부모를 메모리상에 올림
//4.부모의 멤버변수,멤버메소드가 올라간후 자신의 멤버변수,멤버메소드를 메모리상에올림
    String company;
    String position;


    public BusinessMan(String name, String company, String position) {
        super(name);//부모의 멤버변수가 올라가있는상태임으로this사용가능,하지만 this()생성자는 자신을 가르킴으로 주의 super사용할것
        this.company = company;
        this.position = position;
    }

    public void tellYourInfo() {
        System.out.println("My company is " + this.company);
        System.out.println("My position is " + this.position);
        tellYourName();
    }
}


class MyBusinessMan {
    public static void main(String[] args) {
        BusinessMan man = 
        new BusinessMan("Yoon","Hybrid ELD", "Staff Eng.");// 1.new BusinessMan 생성


        man.tellYourInfo();

    }
}

profile
HigasiHosi

0개의 댓글