16일차 강의 정리
1. 상속
public 누구나
protected 디폴트와 동일,그러나 상속받을 경우는 가능
default 동일패키지
private 클래스내부
- 상속하기위한 class에 final 을 붙이면 상속이 불가능
- 그러나 필드에 있는경우에는 단순 상수화, 상속은 가능
- 상속할 class는 하나의 class 만
소스(패키지가 다른경우)
Ex01의 패키지는 package com.hb.pm;
1 2 3 4 5 6 7 8 9 10 | public class Ex01 extends com.hb.am2.Temp{ public static void main(String[] args) { // com.hb.am2.Temp t = new com.hb.am2.Temp(); //이경로를통해서도 ok // t.prn(); //prn()이 protected라서 불가능 Ex01 me = new Ex01(); //내가 상속을 받은 상태이기때문에 protected 가 가능 me.prn(); }//main end }//class end | cs |
상속하기위해서는 class 이름 뒤에 extends (클래스이름)
class Temp의 패키지는 package com.hb.am2;
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Temp { public static int a=0; public Temp(){ } protected void prn(){ System.out.println("상속으로 호출"); } public void prn2(){ System.out.println("상속으로 호출2"); } } | cs |
결과
소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | public class Ex01{ public static void main(String[] args) { Son son = new Son(); Son son2 = new Son(); System.out.println(son.showMoney1()); System.out.println(son.showMoney2()); System.out.println(son.equals(son2)); }//main end }//class end class Son extends Parent1{ //상속은 한 class만 가능 int money=0; /////////////////////이안의 내용이 상속되는 것이다 // int money1 = 3000; // int money2 = 5000; // // int showMoney1() { // return money1; // } // int showMoney2() { // return money2; // } ////////////////////// } class Parent extends Object{ //final 붙이면 상속 불가 int money1 = 3000; int showMoney1(){ return money1; } } class Parent1 extends Parent{ int money2 = 5000; int showMoney2(){ return money2; } } | cs |
결과
소스(오버로드&오버라이드)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class Ex02 { public static void main(String[] args) { // 오버로드&오버라이드 Child ch = new Child(); ch.prn(); ch.prn("자식"); Child ch2 = new Child(); ch2.prn(); ch2.prn("자식2"); }//main end }//class end class Child extends Parent2{ void prn(){ //오버 라이드 -> 상속은 받았지만 기능을 덮다 System.out.println("Child prn 메소드 호출"); } void prn(String st){ //오버로드 System.out.println(st+"child prn 메소드 호출"); } }//class Child end class Parent2{ void prn(){ System.out.println("Parent class prn 메소드 호출"); } }//class Parent2 end | cs |
결과
소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class Ex03 { public static void main(String[] args) { Temp me = new Temp(3); Temp me2 = new Temp(3); System.out.println(me.equals(me2)); } } class Temp{ int a; Temp(int a){ this.a = a; } public int hashCode(){ return a; } public boolean equals(Object obj){ return a==obj.hashCode(); //값을 비교하도록 변경 } } | cs |
결과
소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class Ex04 { public static void main(String[] args) { Child41 ch1 = new Child41(); System.out.println(ch1.money); Child42 ch2 = new Child42(); System.out.println(ch2.money); } } class Child41 extends Parent4{ int func1(){ return money; } } class Child42 extends Parent4{ int money = 3000; //오버라이드 int func1(){ return money; } } class Parent4{ int money = -5000; } | cs |
결과
'* Programming > JAVA' 카테고리의 다른 글
DAY17 추상클래스&인터페이스 (0) | 2016.07.26 |
---|---|
DAY17 상속2(+캡슐화, 다형성) (0) | 2016.07.26 |
DAY16 접근제한자 (0) | 2016.07.26 |
회원가입 프로그램 (0) | 2016.07.25 |
DAY15 Wrapper class (0) | 2016.07.25 |