0
点赞
收藏
分享

微信扫一扫

【Java面向对象】java学习之旅16-抽象类

紫荆峰 2022-03-12 阅读 131

定义:

使用:

注意事项:

下面用枪械类来说明抽象类

/**
 * 	枪械抽象类
 * 
 */
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,没有默认一说也是防止创建父类对象所以用抽象去定义

举报

相关推荐

0 条评论