public class Aclass{
public void method1(){
System.out.println("A");
}
}
public class Bclass extends Aclass{
@Override
public void method1(){
System.out.println("B");
}
public void method2(){
System.out.println("C");
}
}
public class ExtendsTest{
public static void main(String[] args){
Bclass c1 = new Bclass();
Aclass c2 = new Bclass();// Bclass 객체를 넣지만 Bclass는 Aclass를 상속받고 있기 때문에 Aclass객체로 대체(?)된다
c1.method1();
c1.method2();
c2.method1();
c2.method2(); //c2변수는 Aclass객체가 들어 있기 때문에 Bclass에 있는 method2는 사용할 수 없다.
}
}
상속된 클래스 객체 생성을 대충 주석부분처럼 이해하고 있는데
아무리 생각해봐도 주황색 부분처럼 써야하는 상황 자체가 떠오르질 않는데
혹시 아는사람 있으면 예시 몇개좀 던져줄 수 있음??
화성암
대체되는게아니라 Aclass()에서 사용할 수 없는 메소드를 제외하고 Bclass()를 사용한다가 맞지 않을까
Tbps
음.... 그게 좀 더 맞겠네
근데 저럴거면 그냥 A클래스 그 자체를 new로 할당하는게 낫지 않나 싶어서...
아님 클래스 자료형 자체를 넓게 쓰려면 저렇게 하는게 나은건가?
화성암
B클래스는 A클래스를 상속받고 있으므로 B클래스로 정의 내릴순 있는데 위에 문장과 같이 정의하면 그냥 Aclass 요소밖에 못쓰는거지
돈없는공대생
Tbps
ㄳㄳ 정독하러 감
정보처리마법사
음..푸시발송 메소드 만들때 예를 들 수 있겠네
Push객체를 상속하여 send 메소드를 오버라이딩한
IOS객체랑 Android객체를 만들고
파라미터로 Push객체를 받아서 send메소드 실행하는 메소드를 만들어 놓으면
파라미터로 IOS객체를 넘기면 IOS객체에서 오버라이딩한 send메소드가 실행되고, Android객체를 넘기면 Android객체에서 오버라이딩한 send메소드를 실행하게 할 수 있음~
미제승냥이
니가 오토체스를 만든다고 쳤을때
Chess chess = new Goblin()
chessList.put(chess);
for c in chessList:
c.attack();
이럴때씀