抽象类的概念
一个类中没有足够的信息来实例化一个具体的对象,这样的类就是抽象的
实际应用中:一般是父类,因为父类主要是构建基本的大模型,范围太广
就像多态中的应用场景,父类的引用指向子类的对象。
抽象类语法
抽象类和普通类一样,无非是多加了个abstract修饰,抽象方法中不能有实现。
抽象类的特性
1.抽象类和普通类一样,可以拥有成员变量和成员方法。
2抽象类不能实例化对象,也是一种封装性的体现。
3抽象类发生继承时,其中的抽象方法也必须重写。
4,3的特殊衍生,当继承与被继承的类都是抽象类时,里面的抽象方法都必须要重写(不管是直接继承还是间接继承,只要存在抽象方法都必须重写)
5.抽象类中可以没有抽象方法,但有抽象方法就一定有抽象类
6.抽象方法不能被final,static修饰,因为子类必须要重写,也不能被private修饰
抽象类中的构造方法
抽象类中有成员方法和属性,当然也有给属性赋值的构造方法,因为它不能被实例化,不然子类在继承父类时会发生无法给父类初始化的错误,因此这里的构造函数就是给子类用的。
初始化错误
完成初始化和重写抽象类
抽象类的作用
抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类.然后让子类重写抽象类中的抽象方法。
实际作用就是预防编译防止出错,如,final关键字,因为普通的类和方法也能被继承被重写,
使用抽象类的场景就如上面的代码,实际工作不应该由父类完成,而应由子类完成.那么此时如果不小心误用成父类了,使用普通类编译器是不会报错的.但是父类是抽象类就会在实例化的时候提示错误,让我们尽早发现问题。