상속과 다형성

Ⅵ. 최상위 클래스 Object 1. Object 클래스 : 모든 자바 클래스의 부모 클래스 - 자바의 모든 클래스는 Object의 자식클래스 = 자바의 모든 클래스는 Object의 메소드를 가짐 2. Object 메소드 : toString ( ) - 객체의 정보 패키지.클래스명@해쉬코드 - 일반적으로 오버라이딩해서 사용 // Example1 // Object 클래스의 toString() 메소드 package sample; class A { //extends Object (컴파일러에 의해서 자동추가) int a = 3; int b = 4; } class B {// toString() overriding int a = 3; int b = 4; public String toString() { return "..
Ⅴ. super와 super( ) 1. super 키워드 vs super() 메소드 - super 키워드 → 부모클래스의 객체 - 필드명 중복 또는 메소드 오버라이딩으로 가려진 부모의 필드/메소드를 호출하기 위해 주로 사용 // Example1 // 멤버 앞에 참조변수를 생략(this.)하는 경우의 메소드 호출 package sample class A { void abc() { System.out.println("A 클래스의 abc()"); } } class B extends A { void abc() { System.out.println("B 클래스의 abc()"); } void bcd() { abc(); // this.abc(); 와 동일 (this는 나 자신, super는 부모) } } public..
Ⅳ. 필드와 static 멤버(필드/메소드)의 중복 1. 인스턴스 필드는 오버라이딩이 되지 않음 ※ 오버라이딩 : 덮어쓰는 기능 - 서로 다른 메모리를 가지므로 불가능 // Example 인스턴스 필드의 중복 package sample; class A { int m = 3; } class B extends A { int m = 4; } public class Main { public static void main(String[] args) { // 1. 객체생성 A aa = new A(); B bb = new B(); A ab = new B();// 참조 변수에 따라서 결정됨 (A) // 2. 인스턴스 필드 System.out.println(aa.m);// 3 System.out.println(bb.m)..
Ⅲ. 메소드 오버라이딩(Overriding) 1. 메소드 오버라이딩(Overriding) - 메소드 오버라이딩 - 부모클래스에게 상속받은 메소드를 재정의하여 사용 (덮어쓰기 개념) - 메소드 오버라이딩을 위한 조건 - 부모클래스의 메소드와 시그니처 및 리턴 타입 동일 - 부모클래스의 메소드보다 접근지정자는 같거나 넓어야 함 2. 메소드 오버라이딩 (Method Overriding)의 메모리 구조 - 객체내에 동일한 멤버가 두개 이상 있는 경우 : 참조변수가 가리키는 객체의 바깥쪽부터 안쪽으로 들어가면서 첫번째 만나는 멤버가 실행 ※ 메소드 오버라이딩 효과 - 메모리를 재사용하므로 메모리 절약 - 메소드명을 재사용하므로 기능 파악 용이 // Example1 package sample; class A { v..
Ⅱ. 객체의 타입변환 1. 객체의 타입변환 (업캐스팅과 다운캐스팅) - 상속관계에 있는 경우 객체도 타입변환이 가능 - 업캐스팅은 항상 가능 : 생략시 컴파일러에 의해 자동캐스팅 - 다운캐스팅은 때에 따라서 가능/불가능 : 가능한 경우에만 수동으로 직접 캐스팅 필요 // Example package sample; class A {} class B extends A{} class C extends B{} class D extends B{} public class Test { public static void main(String[] args) { // 1. 업캐스팅 (자동변환): 생략시 컴파일러가 자동 추가 // ※ new 를 무엇으로 했느냐가 중요 A ac = (A)new C(); // C->A 업캐스팅..
Ⅰ. 클래스의 상속 1. 상속의 개념 - 상속 : 기존의 클래스로부터 자원을 물려받아 재사용하는 것 (상속은 확장의 개념) ※ 자바에서 만드는 모든 클래스는 자바 기본 클래스인 Object의 자식임 - 부모클래스의 멤버(필드, 메소드, 이너클래스)를 자식클래스가 내려받아(상속) 클래스 내부에 포함 - 자바의 상속은 오로지 위에서 아래로만 진행 - 물려주는 클래스 : 부모클래스, 상위클래스, 슈퍼클래스, 기초클래스 - 물려받는 클래스 : 자식클래스, 하위클래스, 서브클래스, 유도클래스 // Example package Sample; // class : 참조자료형(객체를 만드는 자료형)을 설계한 것 // 접근 제어 지시자 : 사용 가능 범위를 선언함 class Human { String name; int a..
NewBean
'상속과 다형성' 태그의 글 목록