zoukankan      html  css  js  c++  java
  • 18.抽象类与抽象方法的使用

    public abstract class Base {
        //抽象类中可以没有抽象方法,但包含了抽象方法的类就必须被定义为抽象类
        public abstract void method1();
        public abstract void method2();
        public void method3(){}
        //没有抽象的构造方法
        //public abstract Base(){}
        //没有抽象的静态方法
        //static abstract void method4();
        
        public Base(){
            System.out.println("父类的无参构造方法");
        }
        
        static void method4(){
            System.out.print("静态方法表示类所特有的功能,这种功能的实现不依赖于类的具体实例,也不依赖于它的子类。因此,当前类必须为静态方法提供实现");
        }
        
    }
    //如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
    
    public abstract class Sub1 extends Base {
    
        public void method1() {
            System.out.println("重写父类的method1");
        }
        
    }
    //否则就必须实现父类的所有抽象方法
    public class Sub2 extends Base {
        public Sub2(){
            System.out.println("子类的无参构造方法");
        }
    
        @Override
        public void method1() {
            System.out.println("重写父类的抽象方法method1");
        }
    
        @Override
        public void method2() {
            System.out.println("重写父类的抽象方法method2");
        }
    
    }
    public class Test {
        public static void main(String[] args) {
            //抽象类不允许实例化
            //Base base=new Base();
            //抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
            //抽象类不能被实例化,但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
            Base sub=new Sub2();
            sub.method1();
            sub.method4();
        }
    }
  • 相关阅读:
    B1009
    (OK)(OK) [android-x86-6.0-rc1] compile_Android-x86_64_in_IBM-X3650-M4.txt
    Fortran, Matlab, Octave, Scilab计算速度比较
    GNU Octave
    [android-x86-6.0-rc1] /system/etc/init.sh
    [android-x86-6.0-rc1] /system/xbin/log.sh
    Android源码学习之接着浅析SystemServer
    Android源码学习之浅析SystemServer脉络
    Android-x86_64
    Android-x86_64
  • 原文地址:https://www.cnblogs.com/xiaotaoxu/p/5536506.html
Copyright © 2011-2022 走看看