package com.ext2;//상속 접근 지정자 살펴보기
class Point2D{
	private int x=10; //private 접근제한의 경우 
						//상속관계의 자식클래스 에서호출불가
	protected int y=20;
	int z = 30;
	public int getX(){//캡슐화로 가져다 쓰기
		return x;
	}
}

class Point3D extends Point2D{
	public void print(){
		//X가 접근 제한이 private 이기 때문에 호출불가
		//System.out.println(x +", "+y+ ", "+z);
		//사용하려면 private - > protected로 변경
		//메소드 생성후 은닉화 해서 캡슐화로 가져다 쓰기
		System.out.println(y+", "+z);
		System.out.println(getX() +", "+y+ ", "+z);
	}

}

public class SuperSub04 {
	public static void main (String[] args){
		Point3D p = new Point3D();
		p.print();
	}
}

20, 30

10, 20, 30






성격 살피기

package packTest.packOne;//접근 지정자의 성격 살피기-1

public class AccessTest {
	private int   a=10; //[1]private
	int 		  b=20;
	protected int c=30;
	public	  int d=40;
	
	public void print(){
		System.out.println("AccessTest의 print");
		System.out.println("a");
		System.out.println("b");
		System.out.println("c");
		System.out.println("d");
	}
}


package packTest.packTwo;//접근 지정자의 성격살피기-2
import packTest.packOne.AccessTest;

class SubOne extends AccessTest{
	void subPrn(){
		//System.out.println(a); //private 다른 클래스에서 호출불가
		//System.out.println(b); //default 다른 패키지에서 호출불가
		System.out.println(c); //protected 상속관계에선 어디서든 호출가능(패키지가 달라도)
		System.out.println(d); //public 접근 제한 없음
	}
}
//AccessTest랑 상속관계가 없는 클래스
public class SuperSubA {
	public static void main(String[] args){
		AccessTest at = new AccessTest();
		at.print();
		System.out.println("main");
		//System.out.println(at.a);//private 다른 클래스에서 호출불가
		//System.out.println(at.b);//default 다른 패키지에서 호출불가
		//System.out.println(at.c);//protected 상속관계가 아니고 다른 패키지에서 호출불가
		System.out.println(at.d);//[4.main] public - o
		//protected는 같은패키지에선 호출이 가능하지만 상속을 해주면 어느 클래스든 호출가능
	}
}

AccessTest의 print
a
b
c
d
main
40

'Java > Inheritance(상속)' 카테고리의 다른 글

예비  (0) 2012.04.11
상속으로 핸드폰 만들기  (0) 2012.04.11
슈퍼 클래스와 서브 클래스 만드는 예제  (0) 2012.04.11
상속 기본  (0) 2012.04.11

+ Recent posts