Abstract Class
package com.bit.day08;
//추상 클래스 - 추상 메소드를 0개 이상 갖는 클래스 = 추상 메소드를 갖지 않고도 추상클래스가 될 수 있다.
abstract class Lec09{
int su=1234;
void func01(){
System.out.println("기능1");
}
abstract void func02(); //추상메소드 = 선언만 되어있는 메소드
}
public class Ex09 {
public static void main(String[] args){
Lec09 lec=new Lec09(); //오류
}
}
anonymous 클래스란? >> 귀찮아서 만든 클래스..
package ex03.inheritance.abstract13;
public class ShapeMain {
public static void main(String[] args) {
Shape[] shapes = new Shape[] {
new Rectangle("사각형", 10, 10),
new Triangle("삼각형", 10, 10),
new Circle("원", 10)
};
for (int i = 0; i < shapes.length; i++) {
shapes[i].ShowName();
System.out.println("넓이 : " + shapes[i].calcArea());
System.out.println();
}
}
}
package ex03.inheritance.abstract13;
// 추상 클래스
public abstract class Shape {
// 도형마다의 공통점
private String name;
public Shape(String name) {
this.name = name;
}
public void ShowName() {
System.out.println("도형이름 : " + name);
}
// 부모가 정해줄 수 없다
public abstract float calcArea();
}
package ex03.inheritance.abstract13;
public class Rectangle extends Shape {
float width, height;
public Rectangle(String name, float width, float height) {
super(name);
this.width = width;
this.height = height;
}
// 부모로부터 상속받은 추상 메서드를 구현해야 객체생성이 가능하다
@Override
public float calcArea() {
return width*height;
}
}
package ex03.inheritance.abstract13;
public class Triangle extends Shape {
float width, height;
public Triangle(String name, float width, float height) {
super(name);
this.width = width;
this.height = height;
}
@Override
public float calcArea() {
return width*height/2;
}
}
package ex03.inheritance.abstract13;
public class Circle extends Shape {
float radius;
public Circle(String name, float radius) {
super(name);
this.radius = radius;
}
@Override
public float calcArea() {
return radius*radius*3.14f;
}
}