inblog logo
|
vosw1
    Java

    추상클래스

    Dec 22, 2023
    추상클래스

    추상 클래스는 오브젝트가 아니다
    💡
    추상클 래스는 new할 수 없음 → 객체 생성 x
    독립적으로 띄울 방법은 없음
    💡
    상속을 해서 자식 클래스를 띄우면 추상 클래스도 같이 메모리에 뜸
     
    notion image
    package ex06.example5; import javax.swing.plaf.PanelUI; abstract class 판사{ // 추상클래스는 오브젝트가 아니다. => new할 수 없음 public abstract void 심문(); } abstract class 증인{ public abstract void 대답(); } class 왕 extends 판사 { public void 심문(){ System.out.println("왕은 심문한다"); } } class 왕비 extends 판사 { public void 심문(){ System.out.println("왕비는 심문한다"); } } class 모자장수 extends 증인 { public void 대답(){ System.out.println("모자장수는 대답한다"); } } class 토끼 extends 증인 { public void 대답(){ System.out.println("토끼는 대답한다"); } } class 앨리스 extends 증인{ @Override // 어노테이션 : JVM에게 힌트를 줌 public void 대답() { //추상클래스 => 재정의를 강제시킴 System.out.println("앨리스는 대답한다"); } } public class AliceApp { public static void main(String[] args) { 판사 u1 = new 왕비(); // [판사, 왕비] 증인 u2 = new 앨리스(); // [증인, 앨리스] u1.심문(); u2.대답(); } }
    notion image
     
     
    notion image
     
    💡
    추상 클래스를 만드는 이유
    1. 재정의를 강제시킴
    1. 오버라이딩//동적 바인딩이 되어야 함
    →메소드 이름을 강제해서 오류를 줄임
     
    package ex06; abstract class Shape00 { int x, y; public void translate(int x, int y) { this.x = x; this.y = y; } public abstract void draw(); } class Rectangle00 extends Shape00 { int width, height; public void draw() { System.out.println("사각형 그리키 메소드"); } } class Circle00 extends Shape00 { int width, height; public void draw() { System.out.println("원 그리키 메소드"); } } public class AbstractTest { public static void main(String[] args) { Shape00 s1 = new Circle00(); s1.draw(); } }
    notion image
    Share article

    vosw1

    RSS·Powered by Inblog