Abstract

2023. 7. 14. 12:50JAVA

추상클래스를 사용하면 실수로 객체를 만드는 오류를 막아줌.

추상클래스의 문법적 특징

추상메소드를 가지고 있는 클래스는 객체로 만들면 안됨.

 
추상메소드가 있으면 반드시 추상클래스로 만들어야 함.


추상클래스 : new직접 객체 생성 불가. 대신 상속하면 객체로 될수있음. 

추상클래스는 상속해서 사용함.


상속받은 추상메소드는 반드시 오버라이드를 해서 기능을 구현해야만 함

//추상클래스 : 직접 객체 생성은 불가. 대신 상속하면 객체로 될수있음. 
public abstract class Test {
	
	int a; //인스턴스 변수
	static int b;
	
	//인스턴스 메소드
	void show() {
		System.out.println("show..");
	}
	
	//생성자
	public Test() {
		System.out.println("Test객체 생성");
	}
	
	//추상메소드
	abstract void aaa();
	
	//static 메소드
	static void bbb() {
		System.out.println("Test bbb...");
	}

}
public class AAA extends Test{
	
	//상속받은 추상클래스안에 추상메소드가 있다면
	//반드시 구현(implement)해야만 함.
	void aaa() {
		System.out.println("AAA클래스의 aaa method");		
	}
	
	public AAA() {
		//super();
		System.out.println("AAA 객체 생성");
	}
	
}​
public class BBB extends Test{
	
	void aaa() {
		System.out.println("BBB클래스의 aaa method");
	}
	
	public BBB() {
		System.out.println("BBB객체 생성");
	}
}
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 추상 메소드와 클래스 추상 클래스
		
		//추상클래스를 사용하면 실수로 객체를 만드는 오류를 막아줌.
		
		//추상클래스의 문법적 특징만 간단히 알아보기
		
		//추상메소드가 있으면 반드시 추상클래스로
		
		//Test t= new Test(); //error - 추상클래스는 new로 객체생성 불가능
		//추상클래스는 상속해서 사용함.
		//Test를 상속하는 AAA,BBB 클래스 생성
		
		AAA obj=new AAA();
		obj.aaa();
		
		BBB obj2= new BBB();
		obj2.aaa();
		System.out.println();
		
		//업캐스팅도 가능할 것임
		Test t= new AAA();
		t.aaa();
		
		Test t2=new BBB();
		t2.aaa();
		
		//딱 한번만 사용할 클래스를 설계 - Test 추상클래스의 자식으로...
		//Test의 자식 클래스이지만 딱 1개의 객체만 만들고 싶을때..
		//객체를 생성하면서 곧바로 그자리에서 클래스의 설계를 하는 문법
		//사실은 Test를 상속하는 이름없는 클래스를 설꼐하는 것임.
		//익명 클래스 라고 부름 : Anonymous class
		Test t3=new Test() {
			void aaa() {
				System.out.println("익명클래스의 aaa 메소드");
			}			
		};
		t3.aaa();

}//Main class..


}

AAA obj=new AAA();

obj.aaa();

 

BBB obj2= new BBB();

obj2.aaa();

System.out.println();

 

Test t= new AAA();

t.aaa();

 

Test t2=new BBB();

t2.aaa();

위 코드들은 Test를 상속받은 AAA와 BBB 클래스임

 

상속받은 기능들을 오버라이드하여 사용할 수 있게 만들었고

 

실행하였을때 생성자를 통해 객체가 생성되었음을 알수있음 

 

부모 Test를 통하여 업캐스팅도 가능하고 반대로 다운캐스팅도 가능함

 

익명클래스는 익명 클래스 혹은 Anonymous class 라고 부름

딱 한번만 사용할 클래스를 설계 - Test 추상클래스의 자식으로

Test의 자식 클래스이지만 딱 1개의 객체만 만들고 싶을때..

 

객체를 생성하면서 곧바로 그자리에서 클래스의 설계를 하는 문법

 

사실은 Test를 상속하는 이름없는 클래스를 설계하는 것임.

 

 

'JAVA' 카테고리의 다른 글

Interface 예제  (0) 2023.07.14
Interface  (0) 2023.07.14
Polymorphism(다형성)예제  (0) 2023.07.13
Polymorphism(다형성)  (0) 2023.07.13
Final  (0) 2023.07.13