[Java] java 입문 09 - 상속 / innerClass / 추상클래스 / 인터페이스
- 상속 복습
- 생성한 객체를 변수에 넣을 때 변수 dataType에 따라서 사용할 수 있는 필드와 메소드가 달라진다.
- 상속시 객체 생성 순서
- 즉, A클래스 객체를 먼저 생성한 후에 B클래스 객체를 생성한다.
* A class
* B class
* main
* 콘솔 출력시
- super
- 인자를 전달할 때는 super를 이용하여 전달한다.
- 생성자를 이용하여 부모클래스에 필요한 인자를 생성한 후 super를 이용한다.
- 전달하지 않을 경우 오류를 발생시킨다.
*Computer 클래스
*Cpu 클래스
*NoteBook 클래스
- NoteBook의 생성자에 부모클래스의 인자를 받아 전달한다
- Computer의 method를 오버라이딩하여 재정의해준다.
* overriding 하기
* 출력 결과
- InnerClass
- inner Class : 클래스 내부의 클래스
- innerClass를 이용하는 이유 : 바깥을 감싸고 있는 필드나 메소드를 얼마든지 참조할 수 있다.
- local inner Class : 메소드 안의 클래스
* Bakery클래스
- 생성자, 멤버필드, innerClass, local innerClass를 생성한다.
- getBread( )메소드는 Bread를 리턴타입으로 갖는 메소드이다.
* main
- Bakery객체를 생성한다.
- getBread() 메소드로 Bread객체를 생성한다.
- Bread객체 속 메소드를 이용한다.
- 추상클래스
- attack( ) 추상 메소드에 abstract를 넣는다.
- 형태만 정의되어 있을 뿐 실제 구현은 되어있지 않다.
- 추상 메소드를 갖고있는 클래스에도 abstract를 입력한다.
* MyWeapon 클래스
- Weapon을 상속받고 있는 클래스이다.
- 자식클래스인 MyWeapon클래스는 부모클래스의 추상메소드 사용을 위해 overriding해야 한다.
*YourWeapon 클래스
- Weapon을 상속받고 있는 클래스이다.
- 자식클래스인 YourWeapon클래스는 부모클래스의 추상메소드 사용을 위해 overriding해야 한다.
* main 메소드의 잘못된 추상클래스 사용
- 추상클래스의 단독 사용은 불가능하다.
- attack( ) 메소드가 정의되어있지 않기 때문이다.
- 자식 클래스가 overriding으로 재정의해줘야 한다.
* 새로 생성한 클래스를 이용한 main
- MyWeapon, YourWeapon 객체를 생성하여 메소드를 호출한다.
* 익명의 함수를 이용한 main
- 익명의 local innerClass를 이용한다.
- 익명의 local innerClass 이용하는 방법
: new Weapon( ) { 익명의 클래스 자리 }
- 번거롭게 새로 클래스 생성없이 익명Class이용하여 추상클래스를 오버라이딩하여 이용한다. 이 때, 이 익명의 클래스는 Weapon 클래스를 상속 받게 된다.
- 인터페이스(Interface)
* MyRemocon 클래스
- implement받는 Remocon클래스의 abstract 메소드를 overriding한다.
* YourRemocon 클래스
- 같은 방식으로 implement받는 Remocon클래스의 abstract메소드를 overriding한다.
* 새로 생성한 class의 객체를 이용한 main
- Remocon 리턴타입을 이용해도 MyRemocon클래스에서 추상 메소드를 overriding해주었기 때문에 생성이 가능하다.
- .을 이용하여 method를 이용할 수 있다.
* 익명의 class를 이용한 main
- Remocon 클래스만으로는 interface이기 때문에 객체 생성이 되지 않는다.
- 따라서 뒤에 익명의 클래스를 생성한다. 이 때, 이 익명의 클래스는 Remocon 클래스를 implement 받게 된다.
- 익명의 클래스 안에 overriding을 한 후 메소드를 호출한다.
'Language > Java' 카테고리의 다른 글
[Java] java 입문 11 - Util Class(ArrayList/HashMap/Random/HashSet) (0) | 2017.05.22 |
---|---|
[Java] java 입문 10 - GUI/GenericClass/UtilClass (0) | 2017.05.19 |
[Java] java 입문 08 - 다형성 (0) | 2017.05.17 |
[Java] java 입문 08 - 반복문 / object (0) | 2017.05.17 |
[Java] java 입문 07 - 생성자 / static / Array / Loop (0) | 2017.05.16 |
댓글