JAVA 160608 overload
package mypack2;
public class Mygajok {
public static void main(String[] args) {
GrandFa gr = new GrandFa();
System.out.println("가보:" + gr.gabo);
System.out.println("가훈:" + gr.gahun);
System.out.println(gr.say());
gr.eat();
System.out.println("할아버지 나이:" + gr.getNai());
System.out.println("----------------------------");
GrandFa gr2 = new GrandFa(88);
System.out.println("할아버지 나이:" + gr2.getNai());
System.out.println();
System.out.println("---------------------------");
Father fa = new Father();
System.out.println("가보:" + fa.gabo);
System.out.println("가훈:" + fa.gahun);
System.out.println(fa.say());
fa.eat();
System.out.println("아버지 나이:" + fa.getNai());
System.out.println(fa.imsi);
System.out.println("집 수 : " + fa.getHouse());
fa.showData();
System.out.println("---------------");
Me me = new Me();
System.out.println("가보:" + me.gabo);
System.out.println("가훈:" + me.gahun);
System.out.println(me.say());
me.eat();
System.out.println("집 수 : " + me.getHouse());
}
}
package mypack2;
public class GrandFa {
private int nai = 80;
public String gabo = "상감청자";
protected final String gahun = "자바를 공부하라"; //final쓸때 원래는 대문자로 쓴다.
//같은 패키지에선 퍼블릭, 프로젝트로 넘어가면 프라이빗
//같은 패키지 안에선 사용 가능, 다른 채키지면 못씀. 근데 자식클래스면 가능.
//프렌들리랑 똑같음, 단, 프로젝트지만 자식클래스이면 쓸 수 있음.
//프렌들리는 생략한거.
String imsi = "보이나요";
public GrandFa() {
System.out.println("할아버지 생성자");
}
public GrandFa(int nai){
this(); //생성자가 생성자를 호출할 수 있다.
this.nai = nai;
}
public String say(){
return "할아버지 말씀 : 졸지 마!";
}
public void eat(){
System.out.println("밥은 맛있게...");
}
public int getNai() {
//public final int getNai(){ //메소드에 final을 주면 오버라이드 불가
return nai;
}
}
package mypack2;
public class Father extends GrandFa{ //상속(확장)
private int nai = 55; //은닉화
private int house = 1; //Father 고유 멤버
public String gabo = "물병";
public Father() {
super();
//super(23); //부모 생성자 호출 - 생략 가능
System.out.println("아버지 생성자");
}
@Override //해당 메소드가 오버라이드 되도록 강요.
public int getNai() { //method override - 부모와 같은 메소드를 자식에게 완전히 똑같이 또 만듬.
return nai;
}
public int getHouse(){
return house;
}
@Override
public String say() {
return "아버지 말씀: 일 해!";
}
public void showData(){ //자신의 클래스부터 찾고나서, 없으면 부모클래스에서 찾는다. super는 그냥 처음부터 부모.
System.out.println("가보 출력하기---------");
System.out.println(gabo);
System.out.println(this.gabo);
System.out.println(super.gabo);
System.out.println("메소드 호출하기--------");
System.out.println(getNai());
System.out.println(this.getNai());
System.out.println(super.getNai());
System.out.println(this.say()); //this 멤버필드와 지역변수가 이름이 같을 경우에만 쓴다.
System.out.println(super.say());
}
}
package mypack2;
public final class Me extends Father{ // class에 final을 주면 최종 클래스가 됨. 상속불가
public Me() {
//super();
System.out.println("me 생성자");
}
public String biking(){
//System.out.println(gahun);
//gahun = "멋대로 살래!"
return "자전거로 전국일주";
}
}
'📁 공부정리 > JAVA' 카테고리의 다른 글
JAVA 160608 Singleton (0) | 2016.06.08 |
---|---|
JAVA 160608 자판기 복습 (0) | 2016.06.08 |
JAVA 160603-3 class (0) | 2016.06.03 |
JAVA 160603-2 method overload (0) | 2016.06.03 |
JAVA 160603-1 클래스의 기본이해 (0) | 2016.06.03 |