抽象类

 抽象类类似一个规范,继承抽象类就必须重写里面的方法,保障代码的扩展性
*
* 1,抽象类:
*    父类知道子类一定要完成某个功能,但每个子类完成的情况就会不一样
*    子类以后也只会用自己重写的功能,那么父类的该功能就必须定义成抽象方法,子类重写调用   *    子类自己的
* 2,抽象方法:
*   子类都要完成这个工作的功能,但每个子类的工作内容不一样,那么就定义为抽象性方法
*      抽象方法没有方法体,只有方法签名,必须abstract修饰
*      拥有抽象方法的类必须定义成抽象类
*      抽象类可以没有抽象方法,但是抽象方法的类必须是抽象类
*  小结:
*    抽象类:拥有抽象方法类必须定义成抽象类,抽象类必须用abstract修饰
*    抽象方法:没有方法体,只有方法签名,必须用abstract修饰
*
* 3,抽象类的作用:
*      为了被子类继承
*      抽象类是为了被子类继承,约束子类要重写抽象方法
*    注意:一个类继承了抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类
*
* 4,抽象类特征:有得有失
*      有得:抽象类得到了拥有抽象方法的能力
*      有失:抽象类失去了创建对象的能力(抽象类不能创建对象)
*    面试题:
*      抽象类是否有构造器,抽象类是否可以创建对象,为什么?
*          抽象类作为类一定有构造器,而且抽象类必须有构造器,提供给子类创建对象调用父 *           类构造器使用的
*          抽象类虽然有构造器但是抽象类不能创建对象
*        反证:假如抽象类可以创建对象
*          new Animal().run()
*          不能执行,因为没有方法体,只有方法签名,所有抽象类不能创建对象
*   注意:抽象类除了有得有失,类的其他成分都具备
*
*      *抽象类本身意味着抽象,抽象就不能具体实例化
*   小结:
*      抽象类不能创建对象,抽象类可以包含抽象方法
*      出除此之外,类有的成分,抽象类都具备
* 5,抽象类存在的意义
*      1,抽象类就是被子类继承,否则抽象类毫无意义(基本准则)
*      2,抽象类体现模板思想:部分实现,部分抽象,可以设计为模板模式
总结:
*    1,抽象类不能创建对象,如果创建,编译无法通过而报错,只能创建非抽象子类的对象
*      理解:假设创建了抽象类的对象,调用抽象方法,而抽象方法没有具体的方法体,没有意义
*    2,抽象类一定有且必须有构造器,是供子类创建对象时,初始化父类成员使用的
*      理解:子类的构造器中,有默认的super(),需要访问父类构造器
*    3,抽象类中,不一定包含抽象方法,但有抽象方法的类一定是抽象类
*    4,抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义为抽象类
*    5,抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想
*      理解:抽象类中已经实现的是模板中确定的方法
*      抽象类不确定如何定义成抽象方法,交给具体的子类去实现
*
public class DemoAbstract {
    public static void main(String[] args) {
        new Dog().run();
        //new Cat().run();抽象方法不能执行,因为没有方法体,所以抽象类不能创建对象
        //new Cat().test();错的,抽象意味着不能实例化
    }
    
}
abstract class Animal{
    //子类要完成这个功能,但是由自己重写完成
    //抽象方法,没有方法体,只有方法签名,必须用abstract修饰
    //拥有抽象方法的类必须定义成抽象类
    public abstract void run();//run()方法签名
}
class Dog extends Animal{
    @Override
    public void run() {
        System.out.println("Dog");
    }
}
abstract class Cat extends Animal{
    public abstract void run();
    public void test(){}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值