JAV) 0328-1 상속

조한미르·2024년 3월 28일
1
  • 상속
	부모역할을 하는 클래스가 자식 역할을 하는 클래스에게 
    클래스 멤버와 메서드를 물려주는 것을 상속이라함.
    
    상속은 클래스를 재사용하기 때문에 중복을 줄여주고, 수정을 최소화 함.
    
  • 상속의 이유

      1. 중복 코드 제거
      2. 재사용 가능
      3. 코드가 간결
      4. 생산성 증가
  • 상속 선언

      class A { //부모클래스에서 지명 받기 전에는 부모 클래스 역할 X
      
      	.....
       }
       
       
       class B extends A { // B클래스에서  extends A를 작성함으로
       					// A는 부모 클래스, B는 A의 자식 클래스
                        
                        ....
       }
       
       
       

실습)

  • Book
  public class Book { 

      String title;
      int price;

      public void info() {
          System.out.println("책의 제목은" + this.title + "이고 가격은 " + this.price + "원 입니다.");

      }
  }
  • ComicBook
  public class ComicBook extends Book {

      public ComicBook(String title, int price) {

          this.title = title;
          this.price = price;
      }
  }
  • BookStore

    public class BookStore {
    
        public static void main (String[] args) {
          ComicBook comic = new ComicBook("내친구뽀로로", 15000);
          comic.info();
      }
  }

결과)

	책의 제목은 내친구뽀로로이고 가격은 15000원 입니다.
  • 부모 생성자가 수동으로 선언 되어야 할 때
    -> 부모 클래스의 생성자가 기본생성자(파라메터 X)가 아닐때
    ex)

    • Book2

       public class Book2 { 
      
       String title;
       int price;
      public Book2(String title, int price) {
          this.title = title;
          this.price = price;
      }


      public void info() {
          System.out.println("책의 제목은" + this.title + "이고 가격은 " + this.price + "원 입니다.");

      }
 	 }
     
     
  • Novel

         public class Novel extends Book2 {
    
         public Novel(String title, int price) {
    
             //부모클래스의 생성자가 파라메터(매개변수)가없는 기본생성자가 아닐경우,
             //생성자를 만들 수 없기 때문에 개발자가 직접 호출 해줘야한다.
    
             super(title,price); //부모의 생성자를 호출
         }
     }
  • 메서드 오버라이딩>
  상속 관계에서 상위 클래스가 상속해준 메서드의 내용을 다시 정의하여 
  메서드를 구현하는 기술         

실습)

  • Computer
  public class Computer {

      public void powerOn() {
          System.out.println("컴퓨터 전원이 켜집니다.");
      }


      public void powerOff() {
          System.out.println("컴퓨터 전원이 꺼집니다.");
      }
  }
  • SamSung

    public void powerOn() {
    
            super.powerOn();			
            System.out.println(" 헬로우!! 삼성 ");
            System.out.println(" 컴퓨터가 실행됩니다.");
        }
      public void powerOff() {

          super.powerOff();
          System.out.println(" 굿바이!! 삼성 ");
          System.out.println(" 컴퓨터가 종료됩니다.");
      }
  }
  • CompWorld

    public class CompWorld {
        public static void main(String[] args) {
    
            SamSung comp = new SamSung();
            comp.powerOn();
            comp.powerOff();
        }
    }

결과)

         헬로우!! 삼성!!
         컴퓨터가 실행됩니다.
         굿바이!! 삼성!!
         컴퓨터가 종료됩니다.
  • 자바 접근 제한자
	public :제한없이 모둔 패키지, 모든 클래스에 접근 가능
    protected : 같은 패키지 안에서 접근 가능, 다른 패키지라도 자식클래스라면 접근 가능
    default : 같은 패키지 내에서만 접근 가능
    private: 같은 클래스 내에서만 접근 가능
    
    
    
    
  • final

    변수 + final 
     1. 선언한 후 값 변경 X
     2. 선언시 초기 값을 반드시 부여 
    
             
     메서드 + final
    : 오버라이드 사용 불가
    
    객체 + (class) + final
    : 상속 불가( 부모 클래스 될 수 없음)
profile
꼭 해내는 사람

0개의 댓글