抽象类与抽象方法

旧时模样 提交于 2020-02-21 11:16:37

抽象类和抽象方法

抽象类和抽象方法:使用abstract关键字修饰的类和方法就成了抽象类和抽象方法,格式与普通类和方法类似。

 

抽象类的特性:

·有抽象类就要有继承的子类去实现抽象类中的抽象方法。

·抽象类中可以定义普通类中定义的所有成员,并且只有在抽象类中才能定义抽象方法。

·抽象类中不能new对象,抽象类中的对象是给子类调用的。

·在抽象类中定义的方法,在其普通子类中必须实现所有抽象父类中定义的所有抽象方法,否则这个子类也要申明成抽象类。

 

抽象方法的特性:

·抽象方法只有方法声明没有方法实现

·抽象方法是准备在子类中实现的,它只是一个模板。

 

没有抽象属性和抽象变量一说。

 

注意:

abstract与final不能同时修饰一个方法或类。因为final修饰的方法不能被重写而abstract修饰的方法需要在子类实现(重写);final修饰的类不能有继承,而abstract修饰的类是抽象类必须要有子类,因此这两个修饰符冲突,不能一起使用。

abstract与static不能同时修饰一个方法。static修饰方法属于类方法,可以被“类.方法”类直接调用,而abstract修饰的方法是抽象方法,没有方法体,是需要在子类中重写的方法。因此static不能与abstract同时修饰一个方法。

abstract与private不能同时修饰一个方法。private修饰的方法只能在当前类被调用,而abstract修饰的抽象类必须要在子类中被重写才有意义,如果父类中方法权限是private那么这个方法对子类是透明的。因此private不能同时修饰一个方法。

 

·抽象类的作用:

     抽象类就是一个模板,也叫模板设计模式。父类提供了多个子类的通用方法,并且把一个或多个方法留给子类实现,这就是模板模式。

 

例子:抽象类

 

public abstract class SpeedMeter
{
	private double trunRate;
	
	public abstract double getRadius();

	public void setTruneRate(double trunRate)
	{
		this.trunRate = trunRate;
	}

//计算车速的通用算法,周长 x 转速 = 速度
	public double getSpeed()
	{
		return java.lang.Math.PI * 2 * trunRate * this.getRadius();
	}
}


public class Car extends SpeedMeter
{
	public double getRadius()
	{
		return 5.0;
	}

	public static void main(String[] args)
	{
		Car ca = new Car();
		
		ca.setTruneRate(10.0);

		System.out.println(ca.getSpeed());

	}
}


 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!