abstract class : 일반 method + abstract method + variable
JAVA는 다중상속이 불가능(부모는 1개)
interface : abstract method(추상메서드로만 이루어짐->변수,일반메서드 불가능// 선언만되어있는 요소)
다중 상속이 가능하다.
설계의 사양을 빠르게 파악 할 수 있는 장점이 있다.
확장성, 관리의 목적을 가지고 있다.
** MyInterface 메서드() 호출 시
MyClass 메서드로 호출되는데 이는,
부모 인터페이스로 각각의 인터페이스로 잡아 줄 수 있기 때문
**minter.func( );는 에러가 나므로
앞에 func()를 보유 한 YouInterface로 형변환 후 실행하면
HeClass func()가 나온다
MyClass
public class MyClass implements MyInterface{
@Override
public void method() {
System.out.println("MyClass method()");
}
}
MyInterface
public interface MyInterface {
//private int number;-> 에러남. 변수사용 불가
//public void name() {}-> 에러남. 일반메소드 사용불가
public void method();//MyClass 메서드 호출
}
YouClass
public class YouClass implements MyInterface {
@Override
public void method() {
System.out.println("YouClass method()");
}
}
YouInterface
public interface YouInterface {
public void func();
}
HeClass
public class HeClass implements MyInterface, YouInterface {
@Override
public void func() {
System.out.println("HeClass func()");
}
@Override
public void method() {
System.out.println("HeClass method()");
}
public void heMethod() {
System.out.println("HeClass heMethod()");
}
}
Main
public class mainClass {
public static void main(String[] args) {
//MyInterface myinter = new MyInterface();->에러남.
MyClass mycls = new MyClass();
mycls.method();//->MyClass method()
YouClass youcls = new YouClass();
youcls.method();//->YouClass method()
MyInterface myInter = new MyClass();
myInter.method();//->MyClass method()
MyInterface youInter = new YouClass();
youInter.method();//->YouClass method()
//부모 인터페이스로 각각의 인터페이스로 잡아 줄 수 있다
HeClass hcls = new HeClass();//모두 접근 가능쓰
hcls.method();//->HeClass method()
hcls.func();//->HeClass func()
hcls.heMethod();//->HeClass heMethod()
//상속받은 클래스의 인터페이스 생성
MyInterface minter = new HeClass();
minter.method();//->HeClass heMethod()
//HeClass를 상속받아 HeClass의 method()호출
//minter.func();->에러.
((YouInterface)minter).func();//형변환
//MyInterface에 func()이 없으므로, YouInterface로 형변환 후 minter로 호출.
//->HeClass func()
}
}
'JAVA > 기초 문법' 카테고리의 다른 글
접근제한자 정리 (0) | 2020.06.11 |
---|---|
추상클래스 (0) | 2020.06.09 |
그냥 알아두면 좋은 개념 (0) | 2020.06.05 |
...num (0) | 2020.05.28 |
function 배열 할당 (0) | 2020.05.27 |