Java 抽象类和抽象函数

作者: Sia_Coding | 来源:发表于2016-09-28 11:33 被阅读0次

什么是抽象类?当然是比类还抽象的类了=。=
本文基于Mars老师的Java4Android视频。

抽象函数

只有函数的定义,而没有函数体的函数。

//没有花括号 { }
abstract void fun() ; 

抽象类

抽象类的语法特征:

  • 抽象类不能够生成对象。
    为什么呢?如果能生成对象,就可以通过对象调用抽象方法,然而抽象方法并没有方法体,就会出错。
  • 如果一个类当中包含抽象函数,那这个类必须被声明为抽象类。
  • 如果一个类当中没有抽象函数,也可以声明为抽象类。
    当有的类,我们不想让别人生成它的对象,就可以把它定义为抽象类。这种类,也称为基类,专门用来继承。
  • 抽象类可以有构造函数吗?
    (抽象类不能生成对象,构造函数用于生成类对象,那抽象类应该没有构造函数吧?)错了,抽象类是可以有构造函数的。在子类中,如果有构造函数(因为子类可以不是抽象类),那么系统在调用子类的这个构造函数时,会自动地加一行 super();,即调用父类的构造函数。

抽象类的作用

不能生成对象,要抽象类做什么呢?

  • 抽象类,天生就是用来当爹的,也就是用来被继承的。因为它的子类,可以通过重写抽象函数,从而可以生成对象。

举个例子
建一个抽象类,包含一个抽象函数eat()

abstract class Person {
        //抽象类可以有构造函数
    Person() {
        System.out.println("Person`s constructor");
    }

    String name;
    int age;
    void introduce() {
        System.out.println("My name is " + name + ",I`m "+ age + " years old"); 
    }
    
    abstract void eat();
}

Chinese作为Person的子类。如果不重写eat,类名前就必须加上abstract。当然这样做,继承就没什么意义了,因此我们重写eat方法。

class Chinese extends Person {
    Chinese() {
        //系统执行了super();
        System.out.println("Chinese`s constructor");
    }

    void eat() {
        System.out.println("Chinese food saikou~~~~");
    }
}

这里不能生成Person对象,因为它是抽象类。

class Test {
    public static void main(String args []) {
        //向上转型
        Person p = new Chinese();
        p.name = "sia";
        p.age = 22;
        p.introduce();          
        p.eat();
    
    } 
}

结果:

相关文章

  • Java 抽象类和抽象函数

    什么是抽象类?当然是比类还抽象的类了=。=本文基于Mars老师的Java4Android视频。 抽象函数 只有函数...

  • 纯虚函数和抽象类

    纯虚函数和抽象类 概念 纯虚函数:没有函数体的虚函数。 抽象类:包含纯虚函数的类就称为抽象类。 纯虚函数就是在函数...

  • 接口类&抽象类

    java的接口类和抽象类的特点 java中抽象类的特点: 抽象类和抽象方法必须用关键字abstract修饰 2.如...

  • java abstract

    参考java抽象类和抽象方法Android开发:抽象类(abstract class)和接口(Interface)...

  • Kotlin学习笔记(二)类的分类

    1.抽象类 抽象类用abstract关键字修饰,抽象类用abstract修饰的函数,就做抽象函数。抽象类中也可以有...

  • Java 接口知识点

    接口的特性 函数式接口 抽象类和接口区别 Lambda表达式 java常用接口

  • Java基础-抽象类和接口

    抽象类和接口也是 Java 面试中常考的,下面就来总结一下抽象类和接口的相关知识。 抽象类是类,Java 中类是单...

  • C++ - 纯虚函数与抽象类

    纯虚函数:没有函数体的虚函数 抽象类:包含纯虚函数的类只能作为基类来派生新类使用不能创建抽象类的对象抽象类的指针和...

  • Java的抽象类和抽象函数

    主要内容1.抽象函数的语法特征.2.抽象类的语法特征.3.抽象类的作用.在面向对象有一个非常非常有用的东西,先抽象...

  • (转)深入理解abstract class和interface

    理解抽象类 abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非...

网友评论

    本文标题:Java 抽象类和抽象函数

    本文链接:https://www.haomeiwen.com/subject/gbmhyttx.html