java에서 public,private,protected 상속관계
Java에서 상속관계을 이해하면 java가 더욱 친숙하게 느껴질겁니다.
▶맴버앞에 private란?
superclass의 멤버에 private 지정하면 상속받은 subClass라도 멤버로 직접 사용할수 없습니다.
ex> private int age; 상속받은 서브클라스 사용X(허용안됨)
▶맴버앞에 protected란?
superclass의 protected는 두가지 조건에서 접근이 됩니다.
◎ 같은 클래스 (same class)에서 접근
◎ 같은 패키지(same pakeage)와 상속받은 서브클래스에서 접근
ex> protected int age; 상속받은 다른 패키지 서브클래스에도 허용!
▶맴버앞에 public란?
superclass가 public이면 어떤 클래스라도 접근허용, 같은 패키지 다른 패키지도 허용
ex> public int age; 어디에서도 상속받으면 다 허용!
▶맴버앞에 default란?
superClass의 default이면 같은 패키지내 클래스 접근 허용.
ex> int age ; 즉 (default)int age ; 같은 뜻 , 같은 패키지 서브클래스도 허용
부연설명,
public class person{
String name; -> default값으로 설정
protected String graduate -> protected 값으로 설정;
private String psexy -> private 값으로 설정;
public int age; -> public 값으로 설정;
}
맴버앞에 default, protected, private,public 설정하는 이유는 프로그램 외부유출을 방지하기 위해서 입니다. 어떤것은 공개를 해도 어떤것은 비공개로 설정하므로써 프로그램 기능을 보호한답니다.
부연설명? 같은 freperfom패키지 안에 클래스 man과 person이 있습니다. man은
extends로 person을 상속을 받았습니다.
여기서 중요한부분은 상속을 받으면 person 맴버들을 다 사용할수 없다는 겁니다.
즉, person클래스에서 private로 설정된 맴버는 사용할수 없습니다.
public class man extends person{
public void set(){
name=" kook";
graduate ="Yes";
psexy="men"; ->이부분은 person에서 private String psexy설정되어 있기
접근이 안되서, 빨간줄이 뜹니다.
age =26;
}
부연설명? 그럼 private 어떻게 사용하면 될까요? 즉, person class에서
private int age; 설정되었다면 간접적으로 age를 불러서 사용해야합니다.
즉 대표적으로 잘 사용하는 set,get사용합니다.
private int age;
public void setAge(int age){
this.age = age;
} -> setAge에 숫자를 넣게다라는 메소드 입니다.
public int getAge(){
return age;
} -> getAge() 호출하면 숫자를 가져온다는 뜻이며 호출 메소드입니다.
m.set()메소를 호출한다는 뜻입니다.
그리고 System.out.println(m.getAge()); m.set()호출한것을 m.getAge()화면에
보여준다는 기능입니다.