Abstract
2023. 7. 14. 12:50ㆍJAVA
추상클래스를 사용하면 실수로 객체를 만드는 오류를 막아줌.
추상클래스의 문법적 특징
추상메소드를 가지고 있는 클래스는 객체로 만들면 안됨.
추상메소드가 있으면 반드시 추상클래스로 만들어야 함.
추상클래스 : 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 |