티스토리 뷰

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

Recent Comments