A sentimental robot

Is~a 상속관계 본문

Java

Is~a 상속관계

GOD03219 2017. 12. 29. 10:18

상속( is~a )

 

  • 코드의 확장, 재활용이라는 장점을 지닌다.
  •  superclass는 subclass의 공통된 점을 가지고 있다.
  •  상속은 클래스명 뒤에 extends 상속받을 클래스명을 붙힌다.
  •  자바에서 상속은 오직 단일 상속 원칙으로 한다 ( 인터페이스만 다중상속이 가능하다. )
  • 객체에 final을 붙히면 상속관계를 만들 수 없다. ->has~a로 써야함

 

 

 



class A{
 
 public void disp(){
  System.out.println("Super class");
  
 }

 


}
public class Day1012 extends A {   // Day1012은 A클래스가 가지고 있는 걸 다 쓸 수 있다.
 
 public void disp2(){
  System.out.println("Sub class");
 }
 
 public static void main(String[]args){
  
  
  Day1012 ih=new Day1012();
  System.out.println(ih);       // ih.toString()
  ih.disp();
  ih.disp2();
  
  
 }
 

}

 

 


 


 

class A{
 public A(){
  System.out.println("클래스 A의 생성자");
 }
 
}
public class Day1012 extends A {
 public Day1012(){
  // super();호출 -> 부모의 생성자 호출, 상속 시 자식클래스의 생성자 첫번째 라인에 항상 존재하며 subclass의 생성자보다 먼저 호출된다.
  
  System.out.println("클래스 Day1012의 생성자");


 }


 public static void main(String[]args){
  
  
  Day1012 ih=new Day1012();   // "클래스 A의 생성자" 다음 "클래스 Day1012의 생성자" 출력
  
  
  
 }
 

}


 



class A{
 public A(){
  System.out.println("A()");
 }
 public A(int i){    // 오버로딩
  System.out.println(i);
 }
 
 
}
public class Day1012 extends A {
 public Day1012(){


  // super();를 명시적으로 사용해야 할때 -> superclass 생성자가 오버로딩 되었을 때
  super(10);
  System.out.println("Day1012()");
 }
 
 
 public static void main(String[]args){
  
  
  Day1012 ih=new Day1012(); // 10 , Day1012() 출력
  
  
 }
 

}

'Java' 카테고리의 다른 글

Inheritance exercise(2)  (0) 2017.12.29
Inheritance exercise(1)  (0) 2017.12.29
Extended.ver  (0) 2017.12.28
"Has~A" exercise  (0) 2017.12.28
Has~a  (0) 2017.12.28