Published 2022. 11. 2. 12:42

 * 상속이란 


 : 부모(상위) 자식(하위)간의 구조로 클래스를 구성하는 것으로
   다른 클래스가 가지고 있는 필드 및 메소드들을 새로 작성할 필요 없이 
   마치 내 것 처럼 사용할 수 있는 기술 
   

* 상속의 장점 


  -공통적인 코드들을 부모 클래스에 한번 정의 해두면   새로운 클래스 작성시 적은 양의 코드로 작성 가능 
  -중복된 코드를 별도로 관리하기 때문에 코드의 추가나 변경이 용이 
    (프로그램의 생산성과 유지보수에 크게 기여)

* 표현식

[접근제한자] class (하위)클래스명 extends (상위)클래스명{}

 ㄱㅇ

- 부모클래스  Product 필드 

private String brand;
private String pCode;
private String pName;
private int price;

//                      자식  ------>   부모
//                      후손            조상
//                       하위            상위 
//                         this           super
public class Desktop extends Product{
//부모 클래스에 없는 필드 작성                    
private boolean allInOne;

** 기본생성자

public Desktop() {}

 

**매개변수 생성자 

public Desktop(String brand, String pCode, String pName,int price,boolean allInOne){
//brand ~price 까지 네개의 값들은 부모클래스 (Product)필드에 대입 
//super.으로 부모클래스에 접근 가능 (단 private는 접근 불가)
//해결방법 1. 부모클래스에 필드들을 protected 접근제한자로 수정  // protected : 상속구조일때만 접근가능 
/*
super.brand = brand;
super.pCode = pCode;
super.pName = pName;
super.price = price;
*/

//해결방법 2. 부모클래스에 있는 setter메소드 활용(public이기 때문에 접근 가능 )
/*
super.setBrand(brand);
super.setpCode(pCode);
super.setpName(pName);
super.setPrice(price);
*/

//해결방법 3. 부모클래스에 있는 생성자 호출하기 
super(brand, pCode,pName,price);
this.allInOne = allInOne;
}

 

**super() 와 super.

super(): 부모객체의 생성자를 호출하는 메소드로 기본적으로 후손 생성자에 부모생성자 포함

후손객체 생성시에는 부모부터 생성이 되기때문에 후손클래스 생성자 안에는 부모 생성자를 호출하는 super()가 첫줄에 존재 

매개변수 있는 부모 생성자 호출은 super(매개변수,매개변수);

 

super. : 상속을 통한 자식 클래스 정싀시 해당 자식 클래스의 부모 객체를 가리키는 참조변수 

자식 클래스 내에서 부모 클래스 객체에 접근하여 필드나 메소드 호출시 사용.

 

** setter / getter 메소드 

public void setAllInOne(boolean allInOne) {
this.allInOne = allInOne;
}
public boolean isAllInOne() {
return allInOne;
}
//오버라이딩 : 부모클래스에 있는 메소드를 자식클래스에서 재정의 하는것 
public String information() {
//return "brand : " + super.getBrand() + ", pCode : "+ super.getpCode() + ", pName : "+super.getpName() +", price : "+ super.getPrice();

return super.information() + ", allInOne : " + allInOne;
}






}

'JAVA' 카테고리의 다른 글

9_1 .다형성  (0) 2022.11.03
8_2. 상속 오버라이딩  (0) 2022.11.02
7. 객체 배열  (0) 2022.10.31
6_8. 객체 _ 메소드 오버로딩  (0) 2022.10.27
6_7. 객체_ 메소드 예약어 Static  (0) 2022.10.27
복사했습니다!