JAVA抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类的特点
1.抽象类不能直接实例化
2.抽象类中可以有抽象方法也可以有非抽象方法
3.如果一个类中有了抽象方法,此类必需为抽象类
4.抽象方法带有强制性,要求子类必需重写,非抽象方法不带有强制性,子类可以继承也可以重写
5.抽象类存在构造方法,但是抽象类不能直接实例化,我们可以通过多态的形式间接实例化
6.抽象类中可以有成员变量也可以定义常量
7.抽象类的子类要么也是个抽象类,要么必需把抽象类中的所有抽象方法重写
abstract 不能与那些关键字共存
1.private 私有的无法继承,所以更不能重写,相互矛盾
2.final final不能重写
3.static 静态方法不参与重写,属于类
下面用抽象类来演示一个简单的程序

public class text {
    public static void main(String[] args) {
        Animal an = new Dog();
        an.eat();
        an.sleep();
        an=new Cat();
        an.eat();
        an.sleep();
    }
}
 abstract class Animal {
    int num = 1;
    public abstract void eat();
    public abstract void sleep();
}
 class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
    @Override
    public void sleep() {
        System.out.println("猫白天睡觉");

    }
}
class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
    @Override
    public void sleep() {
        System.out.println("狗趴着睡觉");
    }
}

执行上面的程序,结果如下

狗吃骨头
狗趴着睡觉
猫吃鱼
猫白天睡觉

总结

  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值