abstract A {
	int member;
	abstract int method();
	A(){sysout("나는 추상클래스의 생성자")};
	void method1 (int a)
	{
		sysout(a);
	}
}

class B extends A {
	@override              //<-----------------------
	int method()
	{
		return member;
	}
	
	//B(){super();}

}

public static void main(String[] args)
{
	A a = new B();
	a.method1(100);
	System.out.println(a.method());
}



abstract 클래스인 A는 미완성 클래스로 객체 생성 x
따라서 사용을 위해서는 상속을 통해서 인데
class B에서 추상클래서 A를 상속하고 미완성된 클래스를 재정의 하여 사용하는 것으로
사용

 

interface MyInter {
	double PI = 3.14; //멤버변수가 아닌 상수  
			  //모든 메서드들이 abstract 일때 인터페이스로 정의 함
	abstract void method1();//추상메서드 = 정의 부분이 없는 메서드
	int method2(); //abstract 가 생략되어 있음
	void method3(int a);
}

abstract A {
	int member;
	abstract int method();
	A(){sysout("나는 추상클래스의 생성자")};
	void method1 (int a)
	{
		sysout(a);
	}
}

class B extends A {
	@override              //<-----------------------
	int method()
	{
		return member;
	}
	
	//B(){super();}

}

class C implements MyInter {
	//MyInter에 있는 추상 메서드 3개를 재정의 해주어야한다
	//구현을 다 안해주면 오류가남
	@Override
	public void method1()
	{
		System.out.println("인터페이스 메서드1 재정의");
	}
	
	@Override
	public int method2() {
		return 0;
	}
		
	@Override
	public int method2() {
		
	}
}

public static void main(String[] args)
{
	A a = new B();
	a.method1(100);
	System.out.println(a.method());

	// (X) MyInter inter = new MyInter();
	// 인터페이스를 구현하여 사용 extends -> implements
	MyInter inter = new C();
}

'JAVA' 카테고리의 다른 글

[JAVA] 읽으면서 정리하기  (0) 2019.11.10
추상클래스  (0) 2019.10.30
JVM 메모리구조/인스턴스 변수 / 멤버 변수  (0) 2019.09.05
인스턴스 생성/인스턴스 변수/클래스 변수  (0) 2019.09.04
클래스와 객체  (0) 2019.09.03