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

    • 抽象类
      抽象类无法实例化、无法创建对象
      1、例图:
      在这里插入图片描述
      2、什么是抽象类?
      类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象(无法实例化)。
      3、抽象类属于什么类型?
      抽象类也属于引用数据类型
      4、抽象类怎么定义?
      语法:
    [修饰符列表] abstract class 类名{
                类体;
            }
    
    • 抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。
    • final和abstract不能联合使用,这两个关键字是对立的。
    • 抽象类的子类可以是抽象类。抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
    • 抽象类关联到一个概念:抽象方法。什么是抽象方法呢?
      1、抽象方法表示没有实现的方法,没有方法体的方法。
      例如:public abstract void dosome ();
      2、抽象方法特点是:
      特点1:没有方法体,以分号结尾
      特点2:前面修饰符列表中有abstract关键字
      3、抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
    • 重要结论:
      1、一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。(将从父类中继承过来的抽象方法进行覆盖/重写,或者也可以叫做“实现"。)
      2、代码例子:
    package com.zyh.abstractTest;
    
    abstract class Animal {
        public abstract void move();
    }
    
    package com.zyh.abstractTest;
    
    class Bird extends Animal{
        public void move(){
            System.out.println("flying");
        }
    }
    
    package com.zyh.abstractTest;
    
    public class Test {
        public static void main(String[] args) {
            Animal a = new Bird();//向上转型
            //这就是面向抽象编程.
            // 以后你都是调用的a.xxxx,a的类型是Animal;
            // Animal是抽象的,面向抽象编程,不要面向具体编程;
            // 降低程序的耦合度,提高程序的扩展力;
            // 这种编程思想符合0CP原则.
            a.move();
        }
    }
    
    • 判断题:Java语言中凡是没有方法体的方法都是抽象方法
      (错误)
      object类中就有很多方法都没有方法体,都是以";"结尾的,但他们都不是抽象方法,例如:public native int hashcode();这个方法底层调用了c++写的动态链接库程序。前面修饰符列表中没有: abstract。有一个native。表示调用JVM本地程序。
  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/yu011/p/12632714.html
Copyright © 2011-2022 走看看