zoukankan      html  css  js  c++  java
  • Java——抽象类

    抽象类和抽象方法:

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

    抽象的方法没有实体:

     

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

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

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

     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 }

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

     

     

     

  • 相关阅读:
    C#之获取本地IP地址
    C#中对Excel进行操作
    C#中的TCP通讯与UDP通讯
    Flex 学习
    正则表达式实例
    sass调试--页面看到sass文件而不是css文件问题
    webpack+vue-loader 在单独.vue组件中使用sass-loader编译sass报错问题not a valid Win32 applictation
    SVG图案填充-Pattern
    jQuery小技巧
    代码整洁一
  • 原文地址:https://www.cnblogs.com/charmingyj/p/3779109.html
Copyright © 2011-2022 走看看