所谓的抽象类指定义有抽象函数的类。定义抽象函数的关键字是abstract,抽象函数的特点就是只有函数的声明,没有函数的定义。抽象类只是提供一个框架,更有利于程序的组织。就如动物类为列
1 public abstract class testAnimal { 2 3 public abstract void run(); 4 /* 5 public void breath(){ 6 System.out.println("动物会呼吸"); 7 } 8 */ 9 }
不同的动物有不同的跑,所以定义为抽象类。具体实现如狗类:
class Dog extends testAnimal{ @Override public void run() { // TODO Auto-generated method stub System.out.println("狗跑"); } }
在里面要求run方法必须重写。因此增加了程序的灵活性。当然在抽象类中也可以定义非抽象函数,只要是含有一个抽象函数的类就叫做抽象类,抽象方法必须重写。
public static void main(String[] args){ Dog dog = new Dog(); dog.run(); dog.breath(); }
二:接口
接口中只能有常量和抽象函数,即使没有申明,系统也会自动默认,因此接口只是提供一个框架,实现都在其子类当中。
package cn.java.testAbstractClass; public interface Animal { int MAX_SPEED=10; public void run(); //这里即使没有申明为抽象函数,但是系统自己会默认为抽象的在后面的定义中必须重写 } class Dog implements Animal{ @Override public void run() { // TODO Auto-generated method stub System.out.println("狗跑!!!"); } }