자바 클래스 상속관계

까만호랭·2023년 8월 15일
1

상속관계 개념 (is a 관계: ~은 ~이다)

기존의 클래스를 사용하여 새로운 클래스를 만드는 것이다.
상위 클래스를 보통 부모클래스라고도 하며 하위 클래스는 자식클래스 라고 부른다.

상속관계 팁

  • 자식클래스는 부모클래스의 멤버를 모두 상속받으며 자식의 멤버개수는       부모보다 많다.

  • 자식클래스가 부모클래스를 상속할 때 extends를 써줘야함

  • 부모클래스의 private을 갖는 필드 혹은 메소드는 자식이 물려받을 수 xx

  • 멤버를 부를 때 먼저 같은 클래스에서 찾아보고 없으면 부모클래스에서       찾아서 출력됨

  • 상속받고 생성자 생성 시 this.() , super()사용!!

  • 상속받을 때 생성자는 따로 추가할거 없으면 생략되는데 이때 super도         같이 생략됨!!

  • 클래스의 상속관계 종류

    1. Child -> Parents : 상속관계
    class Parents{
    }
    class Child extends Parents{
    }
    1. Me -> Father -> Grandfa
    class Grandparents {
    }
    
    class Parents extends Grandparents {
    }
    
    class Child extends Parents {
    }
    1. YoungBro->Father, OldBro->Father
    class Father {
    }
    
    class YoungBro extends Father {
    }
    
    class OldBro extends Father {
    }  

    상속관계 간단하게 공부해보기

    1. 할아버지 클래스 먼저 생성
    public class GrandFa{
    	private int nai = 80;
        public String gabo="자동차";
        public GrandFa(){
        	System.out.println("할아버지 생성자");
        }
        public int getNai() {   
    		return nai;
    	}
    }
    1. 할아버지를 상속받은 아빠 클래스 생성
    public class Father extends GrandFa{
    	private int nai = 55;
    	final public String gabo = "액자";
    	public Father(){
    		System.out.println("아버지 생성자");
    	}
        public int getNai() { 
    		return nai;
    		//return this.nai();
    	}
        public void showData(){
        	String gabo="항아리";
       	 	System.out.println(gabo);
            System.out.println(this.gabo);
            System.out.println(super.gabo);
            
            System.out.println(getNai());
            System.out.println(this.getNai());
            System.out.println(super.getNai());
        }
    }
    1. 아빠에게 상속받은 까만호랭 클래스 생성
    public class Father extends Horange{
    	public Horange(){
        	System.out.println("호랭이 생성자");
        }
    }
    1. 가족 메인 클래스
    public class Family{
    	public static void main(String[] args) {
        	GrandFa grandfa = new GrandFa(); 
        	System.out.println("가보:"+grandfa.gabo);
            System.out.println("할아버지 나이 : "+grandfa.getNai());
        	
            Father father = new Father();
            System.out.println("가보 : "+father.gabo);
            System.out.println("나이 : "+father.getNai());
        	father.showData();
            
            Horange horang= new Horange();
            System.out.println("가보 :"+horang.gabo);
            System.out.println("나이 :"+horang.getNai());
        	horang.showData();
        
        }
    }

    위의 Family 클래스의 코드들이 실행되면

    GrandFa 에서는
    할아버지 생성자
    가보 : 자동차
    할아버지 나이 : 80


    Father 에서는
    아버지 생성자
    가보 : 액자
    나이 : 55
    father.showData()는 항아리, 액자, 자동차, 55, 55, 80 순으로 출력된다.


    Horange 에서는
    호랭이 생성자
    가보 : 액자
    나이 : 55
    horang.showData()는 항아리, 액자, 자동차, 55, 55, 80 순으로 출력된다.

    중요하게 봐야할 것

    System.out.println(gabo);       // 같은 지역인 항아리 출력
    System.out.println(this.gabo);  // this.이니 현재 클래스의 멤버를 부르므로 액자가 나옴
    System.out.println(super.gabo); // super.이니 할아버지를 불러 자동차가 나옴
  • 부모와 똑같은 메소드를 자신에게 맞혀주면 부모것은 자식에게 묻힌다. : method override(매소드 재정의)

  • protected는 다른 패키지에서 자식 클래스에서만 public(default와 public의 중간) (패키지가 다를땐 public 사용) (같은 패키지에서만 private)
  • profile
    남들과 함께 발자국을 남기는 까만호랭

    0개의 댓글