【Java】抽象类

1.1 抽象类概念

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

在这里插入图片描述
在这里插入图片描述

由于Animal不是某个具体的动物,所以bark()方法无法具体实现,而狗和猫是具体的动物,其bark()可以实现,因此Animal可以设计为抽象类
像这样没有实际工作的方法我们可以把它设计成抽象方法,包含抽象方法的类称为抽象类

1.2 抽象类语法

在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用
给出具体的实现

abstract class Shape{
    abstract public void draw();

    // 抽象类也是类,也可以增加普通方法和属性
    public double getArea(){
        return area;
    }
    protected double area;
}

1.3 抽象类特性

1. 抽象类不能直接实例化对象

Shape shape=new Shape();  //error Shape是抽象类,无法实例化

2. 抽象方法不能是 private 的

abstract class Shape { 
	abstract private void draw(); 
}
//error 

抽象方法没有加访问限定符时,默认是public
3. 抽象方法不能被final和static修饰,因为抽象方法要被子类重写

abstract public final void func1();//error
abstract public static void func2();//error

4. 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰

//矩形类
class Ract extends Shape{
    public double len;
    public double wid;

    @Override
    public void draw() {
        System.out.println("画一个矩形");
    }

    @Override
    public double getArea() {
        return len*wid;
    }
}
// 三角形类
abstract class Triangle extends Shape {
    private double a;
    private double b;
    private double c;
    @Override
    public void draw() {
        System.out.println("画一个三角形");
    }
    //double calcArea(); //编译失败:要么实现该抽象方法,要么将三角形设计为抽象类
}

5. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
6. 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值