zoukankan      html  css  js  c++  java
  • Java基础学习--抽象类与抽象函数

    • 抽象类的作用是强制定义了其子类的实现要求(抽象类中有一些抽象方法,子类若想继承自抽象类则必须覆盖这些方法。在实际开发中,几乎不会使用普通类来定义子类,大多数都是继承抽象类)
    • 规范:abstract class A {

             public abstract void fun1();

             public void fun2() {

             System.out.println("hello");

             } 

             }

    • 抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象;
    • 抽象类中的抽象函数没有函数体,例如:public abstract void move();
    • 一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的。
    • 抽象类中所有的的抽象函数必需子类的覆盖,而非抽象函数不需要覆盖。因为子类会继承父类的函数,如果不去覆盖继承来的抽象函数,那么子类就含有抽象函数,含有抽象函数的类必须要声明为抽象类。
    • 设计这样的抽象类主要是为了防止制造它的对象出来。
    • 有抽象方法的类一定是抽象类!(有abstract修饰的方法,并且方法没有方法体,这样的类一定是抽象类,并且类前面一定要有abstract来修饰)
    • 但抽象类不一定有抽象方法(有abstract来修饰的类一定是抽象类,但抽象类里不一定有抽象方法)

    相关说明:

    1. 抽象类不能用final来定义,抽象类必须有子类,而final不能有子类。
    2. 抽象类只是比普通类多了构造方法而已,普通类中的所有结构抽象类都可以定义,包括普通方法、构造方法、属性、常量等内容;而且子类对象也符合对象实例化流程,先调用父类中的无参构造方法,而后再执行子类自己的构造操作。
    3. 抽象类中可以没有抽象方法,但是依然不能用关键字new进行实例化操作。
  • 相关阅读:
    Unity3d Android SDK接入
    Unity打包IOS和Android以及之间的交互
    Gradle
    General error: 1205 Lock wait timeout exceeded; try restarting transaction的解决办法
    kubeadm init [ERROR ImagePull]: failed to pull image [k8s.gcr.io/kube-apiserver-amd64:v1.11.3]: exit status 1
    yum安装kubectl时报错
    PhpStorm激活码 2020年3月亲测可用
    Vmware 14 安装 Vmware Tools 并配置宿主机共享文件给Vmware中Centos7系统
    期权
    对冲-风险对冲
  • 原文地址:https://www.cnblogs.com/xingyazhao/p/5947826.html
Copyright © 2011-2022 走看看