抽象类和抽象方法

一.抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义为抽象类,而抽象类中可以不含有抽象方法。

        抽象类和抽象方法的特点如下:

        1.抽象类,抽象方法必须使用abstract来修饰,并且抽象方法中不含有方法体。

        2.抽象类不能被实例化,无法使用new关键字调用来调用抽象类的构造方法来创建实例。即使不含有抽象方法也不能创建实例。

        3.抽象类可以包含属性和方法,构造器,初始化块,内部类,枚举类。抽象类的构造器主要用于其子类构造器的调用。

abstract class shape{
{
System.out.println("执行shape的初始代码块");
}
private String color;
public String getColor(){
return this.color;
}
public void setColor(){
this.color=color;
}
public shape(){
System.out.println("执行shape的构造器");
}
public shape(String color){
this.color=color;
}
//定义一个计算周长的抽象方法
public abstract double calPerimeter();
//定义一个返回形状的抽象方法
public abstract String getType();

}
class Triangle extends shape{
//定义三角形的三边
private double a;
private double b;
private double c;
public Triangle(String color,double a,double b,double c){
super(color);
this.a=a;
this.b=b;
this.c=c;
}
//重写计算周长的方法
public double calPerimeter(){
return a+b+c;
}
public String getType(){
return "三角形";
}

}
class Circle extends shape{
private double radius;
    public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
    public  Circle(String color,double radius){
    super();
    this.radius=radius;
    }

@Override
public double calPerimeter() {
// TODO Auto-generated method stub
return 2*Math.PI*radius;
}
@Override
public String getType() {
// TODO Auto-generated method stub
return "圆形";
}

}
public class AbstractDemo {


public static void main(String[] args) {
// TODO Auto-generated method stub
        shape s1= new Triangle("黑色",4,3,3);
        shape s2= new Circle("红色",3);
        System.out.println(s1.calPerimeter()+s1.getType());
        System.out.println(s2.calPerimeter()+s2.getType());   
}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值