抽象类
在面向对象中,一切事物都是对象,对象都是使用类来描述的,但是,当一个类中,没有足够的信息去描述一件具体的事物(对象)时,那么就要将这个类定义为抽象类。
定义:
抽象类需要abstract关键字声明
abstract class Shape{}
实现:
由一个子类继承抽象类,实现抽象类中的抽象方法(抽象类就是用来继承的),子类实现后,创建的子类对象才可以使用这些方法。
class Square extends Shape{
}
特点:
抽象类中可以有构造方法,但是不能创建对象普通类中定义的属性和方法,都可以在抽象类中定义抽象类中可以存在抽象方法
抽象方法没有方法体只有方法的声明抽象方法定义:abstract 返回值类型 方法名 (参数列表); 抽象类中的抽象方法必须由子类实现,如果子类没有实现全部的抽象方法,那么子类也要定义为抽象类,再由子类的子类实现,以此类推一个抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
实例:
public class Test1 {
public static void main(String
[] args
) {
Rectangle rectangle
= new Rectangle(10,20);
rectangle
.perimeter();
rectangle
.area();
Circle2 circle
= new Circle2(2);
circle
.perimeter();
circle
.area();
}
}
abstract class Shape{
public abstract void perimeter();
public abstract void area();
}
class Rectangle extends Shape{
int length
;
int width
;
public Rectangle(int length
,int width
){
this.length
= length
;
this.width
= width
;
}
public void perimeter(){
System
.out
.println("矩形的周长为:"+((length
+width
)*2));
}
public void area(){
System
.out
.println("矩形的面积为:"+(length
*width
));
}
}
abstract class Circle extends Shape{
int radius
;
public Circle(int radius
){
this.radius
= radius
;
}
public void perimeter(){
System
.out
.println("圆的周长为:"+(2*3.14*radius
));
}
}
class Circle2 extends Circle{
public Circle2(int radius
) {
super(radius
);
}
public void area(){
System
.out
.println("圆的面积为:"+(2*3.14*radius
*radius
));
}
}