< 복습 : 상속 01~02 >
Inheritance : 상속
- 부모클래스의 멤버(필드, 메서드)를 자식클래스에서 사용가능
- 자식 클래스가 부모클래스를 결정합니다.
= public class Super{}
= public class sub extends Super {}
- 단일 상속만 지원한다.
- 자식클래스의 생성자 내부에는 super() 생성자가 생략되어있다.
** Override : 부모 클래스에 있는 메소드를 자식 클래스에서 재정의 하는 것
- 단 , 클래스 vs 클래스에서는 선택적으로 적용이 가능함)
- 오버라이드 메서드인 경우 @Override 어노테이션을 적용해주는 것이 좋음
** 다형성 : 상속 관계에서 다형성
- 부모 객체 탙입으로 참조 변수 선언
- 자식 객체를 생성해서 부모 참조변수에 대입
- Super super = new sub();
- 부모클래스가 의미적으로 더 넓은 표현.
< Inheritance : 상속 _ 03 >
- 상속에서의 캐스팅
package promotion;
class A{} //접근제한 package 로 생략되어있음 // 하나의 파일안에 여러개 클래스 생성 가능, 단 public은 하나만
class B extends A{}
class C extends B{}
class D extends A{}
class E extends D{}
public class PromotionTest01 {
public static void main(String[] args) {
B b=new B();
C c=new C();
D d=new D();
E e=new E();
// 다형적 구현
A ab=b;
B bb=(B) ab; // 캐스팅 필
B bc=c; // c의 부모가 b이니까 가능
//A aa= new A();
//B bbb=(B) aa;
////////////////////
// 공간 타입
// 컴파일러가 자동으로 해주는 자동캐스팅(프로모션)
long n= 10;
float num= n;
// 공간타입이 value 타입보다 작으면 프로그래머한테 위임
// 허용하려면 타입캐스팅 진행
// (원하는타입)vaule : 강제 캐스팅
int m=(int)100L;
}
}
package promotion;
class Animal{}
class Mammal extends Animal{}
class Dog extends Mammal{}
class Cat extends Mammal{}
public class PromotionTest02 {
public static void main(String[] args) {
// 연산자(명령어): instanceof
Mammal m=new Mammal(); //A-M
Dog d= new Dog();//A-M-D
Cat c= new Cat();//A-M-C
System.out.println(m instanceof Animal ); //true
System.out.println(d instanceof Mammal ); //true
System.out.println(d instanceof Animal ); //true
System.out.println(c instanceof Mammal ); //true
Animal ab= new Mammal(); //A-M
Mammal ma;
System.out.println(ab instanceof Mammal);
if( ab instanceof Mammal) {
ma=(Mammal) ab;
System.out.println("aa 캐스팅 가능");
}
}
}
*Abstaction
*Buffered
package interfaces;
public interface BoardService {
String WRITER= "관리자"; // 컨스턴스 필드 = 상수 필드= (static final)
void write();
void detail();
void delete();
void update();
// 기능들을 만들 수 있음 // 추상메서드
}
package interfaces;
public class BoardServiceProcess implements BoardService{
@Override
public void write() {
System.out.println("글쓰기 처리 기능");
}
@Override
public void detail() {
System.out.println("게시글 삭제 처리");
}
@Override
public void delete() {
System.out.println("게시글 수정 처리");
}
@Override
public void update() {
System.out.println("게시글 상세조회 처리");
}
}
package interfaces;
interface InterB{
//인퍼페이스 안에는 추상메서드
void printB();
}
interface InterC{
void printC();
}
// 다중상속 가능
public interface InterA extends InterB, InterC {
void pirntA();
}
'JAVA _기초' 카테고리의 다른 글
[JAVA] Generic - 상속, 다형성, 추상화, 캐스팅 (0) | 2023.02.28 |
---|---|
[JAVA] 콜렉션(Collection) (0) | 2023.02.27 |
[JAVA] Inheritance : 상속_02 (0) | 2023.02.22 |
[JAVA] Inheritance : 상속 _01 (0) | 2023.02.21 |
[JAVA] Exceptions: 예외 (0) | 2023.02.20 |