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

    一、抽象类

    1.抽象类不能实例化,因为有抽象方法未实现

    2.可以被抽象类或非抽象类继承

    3.但不是只能被继承,还可以直接拿来使用的,当然,这个使用是拿来声明,反例如下:

    1 public abstract class FanLi {
    2     public abstract void nouse();
    3     public static void main(String[] args) {
    4         FanLi.fun();
    5     }
    6     public static void fun() {
    7         System.out.println("我是反例");
    8     }
    9 }
    View Code

    4.可以有自己的数据成员,也可以有非abstarct的成员方法。成员变量和方法不建议用private修饰,但可以用不会报错。

    5.抽象方法能用public和默认default修饰(以前是protected)

    6.可以有非抽象方法

    二、接口

    1.接口不能直接实例化。

    2.方法默认都是 public abstract 类型的,JKD8新增可以使用default修饰,有方法体

    1 interface Formula {
    2     double calculate(int a);
    3     default double sqrt(int a) {
    4         return Math.sqrt(a);
    5     }
    6 }
    7 //实现Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用
    View Code

    3.不能有私有方法或变量。只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员)。

    4.不能有实现方法

    如果Child extends Parent:

    如果Child是interface,那么Parent必然是interface

    如果Child是interface,那么Child可以同时extends Parent1,Parent2等多个interface

    最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

    abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

    实现抽象类和接口的类必须实现其中的所有方法。

  • 相关阅读:
    二值形态学——开、闭运算
    二值形态学——腐蚀与膨胀 及 C语言代码实现
    数学形态学处理-基本符号和术语
    【OpenCV】图像增强---灰度变换、直方图均衡化
    【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】
    【OpenCV】三种方式操作图像像素
    【OpenCV】透视变换矫正
    数字图像处理基础
    Voronoi图及matlab实现
    粒子群优化算法PSO及matlab实现
  • 原文地址:https://www.cnblogs.com/cing/p/8177430.html
Copyright © 2011-2022 走看看