zoukankan      html  css  js  c++  java
  • 抽象类和接口

    抽象类

    拥有抽象方法的类叫抽象类;只定义方法签名,没有方法体的方法叫抽象方法。

    • 抽象类和抽象方法必须使用 abstract 修饰符来定义,抽象方法不能有方法体,只有方法签名。

    • 有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。

    • 抽象类不能被实例化,其构造器只能被其子类调用初始化父类数据的。

    • 继承抽象类的子类必须将抽象方法重写,要不然只能将子类也定义为抽象类。

    abstract class A {  //抽象类
        protected int x;
        private int y;
    
        public abstract void f1();  //抽象方法
    
        public void f2() {  //普通方法
            System.out.println("f2");
        }
    }
    
    public class B extends A {
        @Override
        public void f1() {  //子类重写父类抽象方法
            System.out.println("f1");
        }
    
        public static void main(String[] args) {
            //A a = new A();  //报错
            A a = new B();
            a.f1();  //f1
            a.f2();  //f2
        }
    }
    

    注意:

    • abstract 不能和 final 共存,abstract 修饰的类只能被继承,abstract 修饰方法只能被子类重写;而 final 修饰的类不能被继承,final 修饰的方法不能被重写。

    • abstract 和 static 不能同时修饰某个方法,没有所谓的类抽象方法,但他们可以同时修饰内部类。

    • abstract 和 private 不能同时修饰某个方法,因为抽象方法不重写将毫无意义。

    • abstract 不能用于修饰成员变量、局部变量和构造器。



    接口

    接口是抽象类的延伸,在 JDK 1.8 之前,它可以看成是一个完全抽象的类,所有方法都是抽象方法。 JDK 1.8 开始,接口也可以拥有默认的方法实现。

    接口的只定义方法签名的方法一般默认为 public abstract ,默认的方法为 public,属性默认为 public static final

    public interface A {  //接口定义用关键字interface
        int a = 123;      //默认public static final
    
        void func1();     //默认public abstract
    
        default void func2() {  //默认方法,需要加default
            System.out.println("func2");
        }
    }
    
    public class B implements A { //接口实现用关键词implements
        @Override
        public void func1() {  //重写抽象方法
            System.out.println("func1");
        }
    
        public static void main(String[] args) {
            //A a = new A();  //报错
            A a = new B();
            a.func1();  //func1
            a.func2();  //func2
        }
    }
    

    注意:

    • 一个接口可以继承多个接口;
    • 一个类可以实现多个接口。
  • 相关阅读:
    BluetoothGetRadioInfo 函数
    BluetoothFindRadioClose 函数
    BluetoothFindNextRadio 函数
    BluetoothFindFirstRadio 函数
    BLUETOOTH_DEVICE_INFO 函数
    BluetoothSetServiceState 函数
    Bluetooth Functions
    union联合体学习
    置顶
    Toppo: 1
  • 原文地址:https://www.cnblogs.com/zongmin/p/11341222.html
Copyright © 2011-2022 走看看