분류 전체보기 (894) 썸네일형 리스트형 11-2장 abstract 제어자 - 추상 메서드 = abstract가 붙은 메서드 = 중괄호가 없는 메서드 = 메서드 기능 자체가 정의되지 않으며, 세미콜론(;)으로 끝남 abstract 리턴타입 메서드명(); - 추상 클래스 = abstract가 붙은 클래스 1. 일반 클래스를 상속해 오버라이딩 수행 -Animal 클래스의 cry()메서드는 내부에서 아무런 기능도 수행하지 않음 -Animal animal1 = new Cat()과 같이 다형적 표현을 사용했을때도 animal1.cry()의 형태로 cry()메서드를 호출하기 위해 사용 package Abstract1; class Animal { void cry() {} //부모 타입으로 cry()메서드를 호출하기 위해 선언(기능없음) } class Cat extends Animal { v.. 11-1장 final 제어자 - final 제어자는 필드, 지역변수, 메서드, 클래스 앞에 위치 가능 1. final 변수 - final 제어자는 변수를 선언할 때만 지정가능 - 한 번 대입된 값을 수정할 수 없음 -final 필드 class A1 { //선언과 동시에 값을 대입할 때 int a =3; final int b =5; A1() { } } class A2 { //선언과 값의 대입을 분리했을 때 int a; final int b; A2() { a=3; b=5; } } class A3 { //final 필드값을 대입한 후에는 추가 값 대입 불가능 int a = 3; final int b = 5; A3() { a=7; //b=9; (불가능) } } - final 필드의 초기화는 반드시 생성자에서 진행 - final 지역 변수 .. 10 - 6장 최상위 클래스 Object - Object 클래스 - 자바의 모든 클래스는 Object 클래스를 상속받음 - 자바의 최상위 클래스 - 컴파일러는 아무런 클래스로 상속하지 않으면 자동으로 extends Object를 삽입해 Object 클래스를 상속 class A { //class A extends Object //상속을 하지 않을때 extends Object 자동으로 추가 } class B extends A { } - Object 10 - 5장 super 키워드와 super() 메서드 - this , this() : 클래스 자신의 내부 구성 요소를 호출하는 문법 요소 - this -> 자신의 객체 -> 인스턴스 메서드 내부에서 필드를 사용하거나 메서드를 호출할 때 참조변수명으로 사용 -> 생략했을 때 컴파일러가 자동으로 추가 - this() 메서드 -> 자신의 생성자 -> 자신의 또 다른 생성자를 호출하고, 생성자 내에서만 사용 가능 -> 항상 첫줄에 위치 1. 부모의 객체를 가리키는 super 키워드 - 필드명의 중복 또는 메서드 오버라이딩으로 가려진 부모의 필드 또는 메서드를 호출하기 위해 사용 1) 멤버 앞에 있는 참조 변수를 생략(this.)했을 때의 메서드 호출 package SuperKeyword; class A { void abc() { System.out.println(.. 10-4장 인스턴스 필드와 정적 멤버의 중복 1. 인스턴스 필드의 중복 - 인스턴스 필드는 상속받은 필드와 동일한 이름으로 자식 클래스에서 정의해도 각각의 저장공간에 정의되므로 오버라이딩은 발생하지 않는다. - 클래스 B는 A를 먼저 상속받은 후 필드를 동일한 이름으로 선언하고, 값을 4로 초기화 class A { int m =3; } class B extends A { int m = 4; } 1) A a = new A(); -> a.m =3 - A() 생성자로 선언하고 A타입으로 선언 - 힙 메모리에는 m =3인 필드를 포함하고 있는 객체가 생성 - A 타입으로 선언돼 있으므로 참조변수는 이 A타입의 객체를 가리키고 있음 2) B b = new B(); ->b.m =4 - B()로 B 객체를 생성하는 과정에서 먼저 부모 객체인 A 객체가 먼저 생.. 10-3장 메서드 오버라이딩 1. 메서드 오버라이딩의 개념과 동작 1) 메서드 오버라이딩 (overriding) - 부모 클래스에게 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것 - 부모의 메서드를 자신이 만든 메서드로 덮어씀 - 조건 ● 부모 클래스의 메서드와 시그너치 및 리턴 타입이 동일해야 함 ● 부모 클래스의 메서드보다 접근지정자의 범위가 같거나 넓어야 함 2) 클래스 A와 B의 상속관계 및 print() 메서드의 오버라이딩 class A { void print() { System.out.println("A 클래스"); } } class B extends A { void print() { //print() 메서드 재정의 -> 오버라이딩 System.out.pritnln("B클래스"); } ● A aa = new A(.. 10-2장 객체의 타입 변환 1. 객체의 업캐스팅과 다운캐스팅 1) 업캐스팅 - 자식 클래스에서 부모 클래스 쪽으로 변환 - 컴파일러가 자동으로 넣어줌 2) 다운캐스팅 - 부모클래스에서 자식 클래스 쪽으로 변환 - 직접 명시적으로 넣어줘야함 - 잘못된 다운캐스팅을 수행하면 ClassCastException 예외 발생 3) 객체 타입 변환의 예 3)-1 사람 ClassCastException 예외 발생 - B() 생성자로 만든 A타입은 B타입으로의 다운캐스팅 가능 -> 객체 자체가 B타입으로 만들어져 있음 - B() 생성자로 만든 A타입을 C타입으로 다운캐스팅 불가 - 캐스팅 가능 여부는 무슨 타입으로 선언돼 있는지는 중요하지 않고 어떤 생성자로 생성됐는지가 중요 2. 메모리로 이해하는 다운캐스팅 AB 업캐스팅 B bb = new B.. 10-1장 클래스 상속의 개념과 문법적 특징 상속 - 부모 클래스의 멤버(필드, 메서드, 이너 클래스)를 내려받아 자식 클래스 내부에 포함시키는 자바의 문법 요소 1. 상속의 개념 - 부모 클래스 : 사람 클래스 - 자식 클래스 : 대학생 클래스, 직장인 클래스 - 두 자식 클래스는 부모의 모든 멤버를 내려받기 때문에 대학생과 직장인 클래스 내에서는 추가 필드와 메서드만 구성하면됨 - UML로 상속을 표시할 때는 화살표를 부모 클래스 쪽으로 향하게 - 부모 클래스에서 자식 클래스로 갈수록 더 많은 특징과 기능이 구체화되므로 범위가 좁아짐(동물 이전 1 ··· 90 91 92 93 94 95 96 ··· 112 다음