상속 INHERITANCE_Part1

2022. 3. 3. 16:52·Programing/JAVA
  • 클래스의 수직 구조 설계
  • extends 예약어 사용
  • 부모 클래스를 자식 클래스가 상속받으면 부모 클래스의 변수와 메서드가 상속됨
  • 부모 클래스의 변수와 메서드를 자신의 것처럼 사용 가능
  • 부모클래스는 슈퍼(super), 상위, 베이스 클래스 라고도 부름
  • 자식클래스는 서브, 하위, 파생 클래스 라고도 부름

부모클래스

package chapter08;

public class Phone {

    String name;
    String color;
    String company;

    void call() {
        System.out.println("전화를 건다");
    }

    void receive() {
        System.out.println("전화를 받다");
    }

}

자식클래스

package chapter08;

public class SmartPhone extends Phone {

    public void installApp() {
        System.out.println("앱 설치");
    }

}

클래스 사용

package chapter08;

public class SmartPhoneMain {

    public static void main(String[] args) {

        Phone p = new Phone();
        p.name = "전화기";
        p.company = "현대";
        p.color = "화이트";

        System.out.println("Phone 출력");
        System.out.println(p.name);
        System.out.println(p.company);
        System.out.println(p.color);
        p.call();
        p.receive();

        SmartPhone sp = new SmartPhone();
        sp.name = "갤럭시";
        sp.company = "삼성";
        sp.color = "블랙";

        System.out.println("SmartPhone 출력");
        System.out.println(sp.name);
        System.out.println(sp.company);
        System.out.println(sp.color);
        sp.call();
        sp.receive();
        sp.installApp();

    }
}

super

  • 부모 인스턴스 : 자식 클래스에서 super.변수 접근 가능
  • super() : 상속 받은 부모의 인스턴스 생성자
  • 상속 받은 자식클래스 인스턴스 생성시 부모 클래스가 먼저 만들어 저야 함
  • 부모와 자식 클래스 모두 기본생성자 만 있으면 모두 생락 가능
  • 부모의 클래스에 오버로딩된 생성자가 있다면 자식 클래스에서 super()로 먼저 호출 해 주어야 함

부모 클래스 기본 생성자

부모클래스

package chapter08;

public class Phone {

    // 기본 생성자 생략    
    public Phone() {
    }

}

자식클래스

package chapter08;

public class SmartPhone extends Phone {

    // 기본생성자 생략가능
    public SmartPhone () {
        // super() -> 부모기본생성자 생략가능
        super() {
        }
    }
}

클래스 사용

package chapter08;

public class SmartPhoneMain {

    public static void main(String[] args) {

                // SmartPhone() -> super() --> 부모인스턴스 생성 --> 자식인스턴스 생성
        SmartPhone sp = new SmartPhone();       
    }
}

부모 클래스 오버로딩 생성자만 있을 때

부모클래스

package chapter08;

public class Phone {

    String name;
    String color;
    String company;

       //  오버로딩 생성자
    public Phone(String name, String color, String company) {
        this.name = name;
        this.color = color;
        this.company = company;
    }
}

자식클래스

  • 부모클래스 생성자 super() 생략 불가
package chapter08;

public class SmartPhone extends Phone {


    public SmartPhone() {
               // 부모 클래스 생성자 호출 
        super("갤럭시", "블랙", "삼성");
    }
}

클래스 사용

package chapter08;

public class SmartPhoneMain {

    public static void main(String[] args) {

        // SmartPhone() -> super() --> 부모인스턴스 생성 --> 자식인스턴스 생성
        SmartPhone p = new SmartPhone();        
    }
}

메서드 재정의 overriding

  • 상속관계에서 부모 클래스의 메서드를 자식 클래스에서 다시 정의 하는 것
  • 자식클래스 인스턴스에서는 재정의된 메서드 호출됨
  • 다형성에서도 참조된 참조변수에서도 재정의된 자식 메서드 호출됨

부모클래스

package chapter08;

public class Car {

    String color;
    String name;

    public void go() {
        System.out.println("전진");
    }

    void back() {
        System.out.println("후진");
    }
}

자식클래스

package chapter08;

public class Taxi extends Car {

    public void go() {
        System.out.println("미터기를 켜고 전진");
    }
}

클래스 실행

package chapter08;

public class TaxiMain {

    public static void main(String[] args) {

        Taxi t = new Taxi();
        t.go(); 

    }
}

'Programing > JAVA' 카테고리의 다른 글

상속 INHERITANCE_Part3  (0) 2022.03.03
상속 INHERITANCE_Part2  (1) 2022.03.03
클래스 CLASS_Part4  (0) 2022.03.02
클래스 CLASS_Part3  (0) 2022.03.02
클래스 CLASS_Part2  (0) 2022.03.02
'Programing/JAVA' 카테고리의 다른 글
  • 상속 INHERITANCE_Part3
  • 상속 INHERITANCE_Part2
  • 클래스 CLASS_Part4
  • 클래스 CLASS_Part3
쿠크
쿠크
  • 쿠크
    쿠크 개발자
    쿠크
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Kubernetes (2)
      • Programing (35)
        • JSP (3)
        • JAVA (22)
        • Spring (5)
        • HTML (5)
      • 이외 (12)
        • Git (2)
        • 임시 잡다함 (6)
        • IntelliJ (1)
        • 에러 모음 (2)
      • OS (2)
        • Linux (2)
      • DataBase (2)
        • Mysql (1)
      • 토이 프로젝트 (0)
        • 게시판 만들기 (0)
      • Spring (0)
      • 부동산 or 주식 (0)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

    • 깃 허브 주소
  • 공지사항

  • 태그

    spring-framework
    ubuntu
    MySQL
    클래스
    spring-framwork
    에러 발생
    jsp
    HTML
    에러원인
    spring
    MVC
    error
    상속
    java
    스프링 특징
    kubernetes
    IntelliJ
    Database
    Linux
    HTTP란
  • hELLO· Designed By정상우.v4.10.3
쿠크
상속 INHERITANCE_Part1
상단으로

티스토리툴바