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의 printabcdmain40
'Java > Inheritance(상속)' 카테고리의 다른 글
예비 (0) | 2012.04.11 |
---|---|
상속으로 핸드폰 만들기 (0) | 2012.04.11 |
슈퍼 클래스와 서브 클래스 만드는 예제 (0) | 2012.04.11 |
상속 기본 (0) | 2012.04.11 |