一.【第十八章】抽象类的定义与使用:
1.抽象类的基本概念:
类继承的主要作用是可以扩充已有功能,但对于之前的继承我们不难发现,子类可以根据自己的需求来决定是否要覆写某一个方法,这时候父类无法对子类做出强制性决定(你必须覆写某些方法)。
这个时候往往不会采用类的继承(在实际的开发中,很少会出现继承一个已经完善的类,可以直接使用的类,而是必须要继承抽象类),在以后进行父类设计的时候,我们优先考虑的,一定是抽象类。
抽象类的主要作用在于对子类中覆写方法进行约定,在抽象类里面可以去定义一些抽象方法以实现这样的约定
抽象类主要是指使用了abstract关键字定义的并且没有提供方法体的方法,而抽象方法所在的类必须为抽象类,抽象类必须使用abstract关键字定义(普通类的基础上追加抽象方法就是抽象类)。
范例:如何定义抽象类
abstract class Message { private String type; public abstract String getConnectInfo(); //定义抽象类 public void setType(){ this.type = type; } public String getType(){ //普通方法 return this.type; } }
抽象类的使用原则:
抽象类必须提供有子类,子类使用extends继承一个抽象类。
抽象类的子类(不是抽象类)一定要覆写抽象类中的全部抽象方法。
抽象类的对象实例化可以利用对象多态性通过子类向上转型的方法完成。
范例:
abstract class Message { private String type; public abstract String getConnectInfo(); //定义抽象类 public void setType(String type){ this.type = type; } public String getType(){ //普通方法 return this.type; } } class DatebaseMessage extends Message { @Override public String getConnectInfo(){ return "Oracle数据库消息加载中...."; } } public class tsy { public static void main(String[] args) { Message mgr = new DatebaseMessage(); //向上转型实例化抽象类 mgr.setType("客户消息"); System.out.println(mgr.getConnectInfo()); System.out.println(mgr.getType()); } }
从整体上来讲,抽象类只是比普通类增加了抽象方法以及对子类方法的强制性覆写。
对抽象类使用的几点意见:
1.抽象类使用很大程度上有一个核心问题:抽象类自己无法直接实例化;
2.抽象类之中主要的目的是进行过度操作使用,所以当你要使用抽象类进行开发的时候,往往都是在你设计中需要解决类继承问题所带来的代码重复处理