抽象类
- 抽象类其实就是普通的类,只不过就多增加了一个抽象方法的定义
- 当在使用这个抽象类(也就是被子类所继承)的时候就必须将这个抽象类里面的抽象方法全部重写
- 抽象类是无法直接进行对象实例化,所以必须有子类去继承抽象类,所以抽象类/抽象方法绝对不能定义为final
- 可以在抽象类中提供构造方法,当子类继承后默认调用父类的无参构造,若没有无参构造,子类就必须用super形式调用指定参数的构造方法,详细见调用单参的构造方法
- 抽象类中可以没有抽象方法,但是就算没有抽象方法也不能直接new出实例化抽象类对象
- 抽象类中可以有static方法,这个方法不受抽象类实例化对象的限制,详细见static方法抽象类
- 抽象类中可以定义成员属性和普通方法
具体代码:
1)定义抽象类 abstract class
可以定义多个抽象方法,当子类继承时候就必须重写完这些抽象方法
抽象方法虽然是方法,但是与普通方法不同的是没有方法体,也就是没有普通方法里面的大括号
抽象方法也是用(必须用)abstract关键字去定义的
abstract class Message{
private String type;
public abstract String getConnectInfo();
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
}
2)使用抽象类
抽象类的对象实例化可以利用对象多态性通过子类向上转型来获取
package com.abstact;
public class AbstactTest {
public static void main(String[] arg