java 接口

本文详细介绍了Java中的接口概念,包括接口的定义、接口与抽象类的区别、抽象方法和默认方法的使用,以及函数式接口的特性。同时探讨了子类如何实现接口和抽象类的特性和限制。
摘要由CSDN通过智能技术生成

目录

接口的概念

定义接口:

 子类实现接口:

 接口:

函数式接口:

用abstract修饰的类:

定义抽象类

抽象类修饰的特点

接口的概念

接口指用interface关键字定义的特殊类,也称接口类型,他描述系统对外提供的服务,但不包含具体实现

接口定义了多个类的共同行为规范,这些行为是对象与外部交流的通道,接口体现了规范与实现分离的设计原则,提高了系统的可扩展性和可维护性

定义接口:

【修饰符】 interface 接口【extends 父接口列表】{

//(1)声明静态常量

//(2)声明抽象方法

//(3)定义默认方法

//(4)定义静态方法

}

(1)声明静态常量的默认修饰符public final static ,也声明为final static

(2)声明抽象方法的默认修饰符public abstract

(3)定义默认方法的默认修饰符default,该方法是实体方法,在实现接口的子类可以调用

(4)定义静态方法的修饰符static,该方法是实体方法,用接口名直接调用 

​
package h.j.k;

interface MyInterface{//接口
    double pt = 3.14;//静态常量,默认修饰符public final static
    void show(String meg);//抽象方法,默认修饰符public abstract
    public default void printX(){//默认方法(Java 8)
        System.out.println("接口默认方法");
    }
    public static void printY(){//静态方法(Java 8)
        System.out.println("接口静态方法");
    }
}

​

 子类实现接口:

class 子类名 implements 接口a,接口b,接口c……{

//数据成员

//成员方法

//实现接口的所有抽象方法

}


class MyClass implements MyInterface{//子类实现接口
    void display(){
        System.out.println("子类方法");
    }

    @Override
    public void show(String meg) {//覆写接口的抽象对象
        System.out.println("覆写接口的抽象方法");
    }
}


​

 接口:

接口简单的说是一类行为的集合,接口不创建对象,接口内可以有抽象方法、常量、默认方法、静态方法

package h.j.k;

interface MyInterface{//接口
    double pt = 3.14;//静态常量,默认修饰符public final static
    void show(String meg);//抽象方法,默认修饰符public abstract
    public default void printX(){//默认方法(Java 8)
        System.out.println("接口默认方法");
    }
    public static void printY(){//静态方法(Java 8)
        System.out.println("接口静态方法");
    }
}
class MyClass implements MyInterface{//子类实现接口
    void display(){
        System.out.println("子类方法");
    }

    @Override
    public void show(String meg) {//覆写接口的抽象对象
        System.out.println("覆写接口的抽象方法");
    }
}

public class Show {
    public static void main(String[] args) {
        MyClass mc = new MyClass();
        mc.show("接口抽象方法");//子类对象调用实现的抽象方法
        mc.printX();//通过子类调用接口的默认方法
        MyInterface.printY();//通过接口名调用接口的类方法
        System.out.println(MyInterface.pt);
    }
}

总结:接口内的成员,方法等都必须是抽象的或是public,static,final的。 

函数式接口:

什么是函数式接口,函数式接口就是只有一个抽象方法的接口被称为函数式接口

用abstract修饰的类:

含有抽象方法的类,必须是抽象类

抽象类中,未必一定含有抽象方法

抽象类不能实例化对象

定义抽象类

abstract class 抽象类名{

//数据类型

//构造方法

【访问权限】返回值类型 方法名(形参列表){//普通方法

//方法体

【return 返回值】

         }

         【访问权限】 abstract 返回值类型 方法名(形参列表);//抽象方法,无方法体

}

抽象类中可以有零个或多个抽象方法,也可以包含非抽象方法;

abstract class Animal1{
    public void keeper(){}//普通方法
    abstract void food();//抽象方法
}

抽象类中可以不定义抽象方法,但抽象方法的类必须是抽象类;

抽象类可以派生子类,如果派生实体子类,实体子类必须实现抽象类中定义的所有抽象方法;如果派生抽象子类,抽象子类可以不实现抽象父类的抽象方法

abstract class Animal1{
    public void keeper(){}//普通方法
    abstract void food();//抽象方法
}
class Cat1 extends Animal1{//实体子类,覆写父类抽象方法
    @Override
    void food() {
        System.out.println("小猫吃鱼");
    }
}
abstract class Dog extends Animal1{//抽象子类,可不覆写父类抽象方法
    abstract void eat();
}

抽象类修饰的特点:

抽象对象不能实例化对象,由抽象类派生的实体子类实例化抽象父类对象

虽然抽象类中能定义构造方法,但不能直接调用抽象类的构造方法实例化对象

抽象父类和抽象子类不能有方法名与形参列表相同的抽象方法,即抽象方法不能重载

abstract 与final 不能同时修饰同一个类,因为final 修饰的类不能被继承,如果抽象类不能被继承,就没有子类覆写父类的抽象方法,抽象类的存在就毫无意义

abstract 不能与private、static、final或native等同时修饰一个方法

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值