定义:
使用:
注意事项:
下面用枪械类来说明抽象类
/**
* 枪械抽象类
*
*/
public abstract class Gun {
private String name;
private double range;
private double caliber;
public Gun() {
super();
}
public Gun(String name, double range, double caliber) {
super();
this.name = name;
this.range = range;
this.caliber = caliber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getRange() {
return range;
}
public void setRange(double range) {
this.range = range;
}
public double getCaliber() {
return caliber;
}
public void setCaliber(double caliber) {
this.caliber = caliber;
}
//抽象方法
public abstract void shoot();
@Override
public String toString() {
return "Gun [name=" + name + ", range=" + range + ", caliber=" + caliber + "]";
}
}
建立一个突击步枪子类
/**
* 步枪子类
*/
public class Musket extends Gun {
public Musket() {
super();
}
public Musket(String name, double range, double caliber) {
super(name, range, caliber);
}
@Override
//如果本类不是抽象类,必须重写抽象父类的抽象方法
public void shoot() {
System.out.println("突突突");
}
}
在主方法中
public static void main(String[] args) {
//抽象类的内部实现
//可以理解为java不允许抽象类创建对象,但是如果实现了抽象的方法可以允许创建实例对象
Gun gun1 = new Gun("黄金左轮", 100.5, 5.8) {
@Override
public void shoot() {
System.out.println("点射");
}
};
System.out.println(gun1.toString());
gun1.shoot();
//通过子类实现抽象父类,创建对象
Musket gun2 = new Musket("ak47", 400, 7.62);
System.out.println(gun2.toString());
gun2.shoot();
}
总结:
用abstract去定义一个抽象类,定义抽象方法是必须要加abstract,没有默认一说也是防止创建父类对象所以用抽象去定义