10、从零开始学习JAVA--抽象类和抽象函数

使用关键字:abstract

1、抽象函数

只有函数的定义,没有函数体的特殊函数被称为抽象函数,如:

abstract void fun();

抽象函数所在类必须是抽象类。

2、抽象类

使用abstract关键字来定义的类,如:

abstract class Person {...};

2.1、抽象类不能够生成对象,即不能使用new来调用构造函数。

2.2、如果一个类当中包含有抽象函数,那么这个类必须声明为抽象类。

2.3、如果一个类当中没有抽象函数,那么这个类也可以声明成抽象类。

抽象类天生是用来当“爹”的,它本身不能生成对象,但通过继承,在子类中可以对它的抽象函数进行复写,复写时不要再加abstract关键字。

抽象类是有构造函数的(只不过不能被new),但可以在子类中通过super关键字来调用。

3、抽象类的最基本应用

如果一个类,它的某一函数必须由子类实现,而又无法在父类中写出一个通用的函数,就可以定义成抽象函数和类。

这样的话,如果子类忘记重写抽象函数,JVM就会报错,达到“如果一段代码,它的语意错误,那么它的语法也应该错误”的目的,参考打印机的例子。

abstract class Printer
{
	void open()
	{
		System.out.println("Open");
	}

	void close()
	{
		System.out.println("Close");
	}

	abstract void print();
}
class HpPrinter extends Printer
{
	void print()
	{
		System.out.println("使用HP打印机进行打印");
	}	
}
class CanonPrinter extends Printer
{
	void print()
	{
		System.out.println("使用Canon打印机进行打印");
	}	
}
class Test
{
	public static void main(String[] args)
	{
		HpPrinter P1 = new HpPrinter();
		P1.open();
		P1.print();
		P1.close();
		
		CanonPrinter P2 = new CanonPrinter();
		P2.open();
		P2.print();
		P2.close();
	}
}

你可能感兴趣的:(java)