栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java抽象类和接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java抽象类和接口

抽象类

abstract: 修饰方法/类

有抽象方法的类必须定义为抽象类

抽象类不能被实例化,即不能使用new关键字

抽象类可以有构造函数,创建子类对象时使用

一个抽象类至多有0个抽象方法,至多所有都是

子类必须重写父类抽象方法或者子类也为抽象类 非抽象方法可不重写

抽象方法: 就是项目开发时候的一种[规范] 抽象方法只做方法的声明 不做方法的具体实现

abstract public class MyAB { //使用abstract修饰类
    public double n;
    final static public double PI = 3.14;
​
    public MyAB() {
    }
​
    public MyAB(double n) {
        this.n = n;
    }
​
    abstract public double  ZC(double n); //使用abstract修饰方法 没有方法体
    abstract public double  Area(double n);
}
​
public class Circle extends MyAB{
​
   //非抽象子类必须重写
    @Override
    public double ZC(double n) {
        return PI*2*n;
    }
​
    @Override
    public double Area(double n) {
        return PI*n*n;
    }
}
接口

接口可以看做是一种极端的抽象类(接口不属于类)。它不允许有构造方法,不允许被实例化

接口使用interface 代表的是接口

接口中定义的变量都使用 public static final(可省略) 也就意味着定义的都是常量

在接口中定义的方法都是使用 public abstract 修饰的 也就意味着是抽象方法(JDK7及以前版本)

接口不可以被实例化(不可以被new对象)

接口中不可以定义构造方法 /代码块/静态代码块

一个类可以实现多个接口 使用(implements) 每一个接口之间使用逗号进行分割

一个类既想继承一个类又想实现多个接口 顺序是先继承 再实现 例子:public class Cla extends Fu implements Face1,Face2

public interface Face1 {
    public static final int a =100;
    int b=10; // 默认为public static final 可不写
​
    public abstract void aa();
    void bb(); //方法默认为public abstract 同样无方法体
}
public interface Face2 {
    
}
public class Fu {
  
}
public class Cla extends Fu implements Face1,Face2 {
   public  void aa(int a){
​
    }
    public void bb(){
​
    }
}

接口和接口之间注意:

接口和接口之间是多继承

类和类之间是单继承 类和接口之间是多实现 接口和接口之间是多继承

如果一个接口继承了两个接口,再父接口中定义相同的常量 外部获得时候就会报错

如果一个接口继承了两个接口 两个父接口中有相同方法 这样操作不报错 但是在子接口中相当于只有一个


JDK8/9接口种新增的操作

JDK8中新增了 静态方法/非静态方法(必须加上default) 都需要使用public 修饰

JDK9中新增了私有的静态/非静态方法

上面的非抽象方法 子类是可以实现 也可以不实现!!

public interface B {
​
    String  name="b";
​
    void  aa();
}
public interface C {
    String  name="c";
​
​
     void  aa(int num);
}
public interface A extends B,C {
​
    //String  name="a";
​
}
public class Zi  implements  A {
    @Override
    public void aa() {
​
    }
​
    @Override
    public void aa(int num) {
​
    }
}
System.out.println(A.name); //报错 在A中定义String后打印a
​
public interface D {
  //jdk8  public可省略
    public static void test(){
        System.out.println("新增了静态方法");
    }
​
    public default void test2(){ 
        System.out.println("新增了default方法");
    }
    //jdk9+  便于将多个方法中的冗余代码进行提取,并且不对外公开。减少冗余、也实现了代码隐藏
    private   void aa(){
    }
}
​
区别

接口:

实现类可以实现多个接口。

接口中只能包含public static final属性。

接口只能有抽象方法,静态方法,default修饰的方法。

接口不允许有构造方法。

接口可以多继承

不可以创建对象

抽象类:

子类只能继承一个抽象类。

抽象类可以包含任意类型属性。

抽象类可以有普通方法,静态方法,抽象方法,但是不能有default修饰的方法。

抽象类可以有构造方法。

不可以创建对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759785.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号