阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第18 章 : 抽象类的定义与使用:课时82:抽象类基本概念

类继承的主要作用在于可以扩充已有类的功能,但是对于之前的继承操作而言会发现,子类可以由自己选择任意来决定是否要覆写某一个方法,这个时候父类无法对子类做出强制性约定(强制性必须覆写某些方法),这种情况下往往不会采用类的继承(在实际的开发之中很少会出现继承一个已经完善的类,可以直接使用的类)而是必须要继承抽象类,在以后进行父类(SuperClass)设计的时候优先考虑的一定是抽象类。

抽象类的基本定义

抽象类的主要作用在于对子类中覆写方法进行约定,在抽象类里面可以去定义一些抽象方法以实现这样的约定,抽象方法指的是使用了abstract关键字定义的并且没有提供方法体的方法,而抽象方法所在的类必须为抽象类,抽象类必须使用abstract关键字来进行定义(在普通类的基础上追加抽象方法就是抽象类)。
范例:定义一个抽象类

abstract class Message {
      // 定义抽象类
	private String type ; // 消息类型
	public abstract String getConnectInfo() ; // 抽象方法
	public void setType(String type) {
      // 普通方法
		this.type = type ;
	}
	public String getType() {
      // 普通方法
		return this.type ;
	}
}

当一个抽象类定义完成之后(切记:“抽象类不是完整的类”),如果要想去使用抽象类必须按照如下原则进行:
1.抽象类必须提供有子类,子类使用extends继承一个抽象类;
2.抽象类的子类(不是抽象类)一定要覆写抽象类中的全部抽象方法;
3.抽象类的对象实例化可以利用多态性通过子类向上转型的方式完成。
范例:使用抽象类

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 DatabaseMessage extends Message {
      // 类的继承关系
	public String getConnectInfo() {
      // 方法覆写
		return "Oracle数据库连接信息。" ;
	}
}
public class JavaDemo {
     
	public static void main(String args[]) {
     
		Message msg = new DatabaseMessage() ;
		msg.setType("客户消息") ;
		System.out.println(msg.getConnectInfo());
		System.out.println(msg.getType());
	}
}

从整体上来讲,抽象类只是比普通类增加了抽象方法以及对子类的强制性的覆写要求而已,其它的使用过程和传统的类继承是完全相同的。
对于抽象类使用的几点意见:
1.抽象类使用很大程序上有一个核心的问题:抽象类自己无法直接实例化;
2.抽象类之中主要的目的是进行过渡操作使用,所以当你要使用抽象类进行开发的时候,往往都是在你设计中需要解决类继承问题时所带来的代码重复处理。

你可能感兴趣的:(阿里Java学习路线)