java——抽象类

java——抽象类

抽象类和抽象方法:

一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。我们使用abstract关键字来定义抽象类,使用abstract关键字定义的方法称为抽象方法,实际上抽象类除了被继承之外没有任何意义,抽象类中的某些行为在没有特定的运行时不会有任何的意义,抽象的类代表此类必须要被extend过,抽象的方法代表此方法一定要被覆盖过。

抽象的方法没有实体:

 

public abstract void eat();//没有方法体,直接以分号结束

 

如果声明出一个抽象的方法,就必须将类也标记为抽象的。你不能在非抽象类中拥有抽象方法。就算只有一个抽象的方法,此类也必须标记为抽象的。

实现抽象类:实现抽象的方法就如同覆盖过方法一样。抽象的方法没有内容,它只是为了标记出多态而存在。这表示在继承树结构下的第一个具体类(不是抽象的类就被称为具体类,比如创建一个Dog的抽象类,那就可以有金毛、贵宾、哈士奇等具体类)必须要实现出所有的抽象方法。

java——抽象类
 1 abstract class Animal {
 2     String name;
 3     String food;
 4 
 5     public abstract void eat();
 6     public abstract void voice();
 7 }
 8 
 9 abstract class Canine extends Animal {
10     public void eat() {
11         System.out.println("犬类动物在吃东西!");
12     }
13 }
14 
15 public class Dog extends Canine {
16     public void voice() {
17     System.out.println("汪汪汪!");
18 }
19     public static void main(String[] args) {
20         Dog dog1 = new Dog();
21         dog1.eat();
22         dog1.voice();
23     }
24 }
java——抽象类

 

上面的例子,首先定义了一个抽象的Animal类,类中又定义了两个抽象的方法,因为是抽象的方法,可以不对它们进行实例化,第二个抽象类继承了Animal抽象类的一个方法,因为Canine也是抽象类,可以实例化也可以不实例化,第三个Dog类又继承了Canine类,但它是public型,即非具体类必须实现所有的抽象方法,而在Canine类中已经实现了eat()方法,在Dog类中就不必多此一举了。

 

 

 

java——抽象类,布布扣,bubuko.com

java——抽象类

上一篇:生产者消费者问题——C++ windows版 多生产者多消费者的队列实现


下一篇:Javascript表格中搜索