[JavaSE]接口--------如何有效避免java开发中的单继承局限

本文探讨了Java中的接口如何帮助避免单继承局限。内容包括接口的定义,子类如何通过implements实现接口,接口的应用场景,以及接口与抽象类的主要区别。通过示例代码展示了接口的使用,并指出接口中的方法默认为public,强调接口在定义操作标准、表示能力及分布式开发中的重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预备知识:

目录

 

接口

子类继承抽象类实现接口:

接口的应用:

抽象类和接口的区别:


接口

定义:抽象方法和全局常量的集合,在java中用interface关键字定义

eg.定义一个简单的接口

interface IMessage{
public static final String MSG="I am a Student";//全局常量
public abstract void print();//抽象方法
}

这里有一些小贴士:

为了区分接口,建议在所有接口的前面追加字母I

子类实现一般以impl结尾,表示此类是一个接口的子类

使用原则:

  • 子类如果想要实现接口,必须使用implements关键字
  • 一个子类可以实现多个接口
  • 接口无法直接创建实例化对象需要通过具体子类向上转型为其实例化
  • 接口中只允许public权限(不管是属性还是方法 权限都是public)
  • 一个抽象类可以使用implements实现多个接口,但接口不能继承抽象类

关于覆写:请看下面一段代码:

interface IMessage{
    void print();
}
class Message implements IMessage{
    void print(){
        System.out.println(" I am a Student.");
    }
}
public class Test{
public static void main(Stirng[] args){
IMessage m=new Message();
m.print();
Message n=(Message) m;
n.print();
}

接口中权限更加严格了,所以print()方法不能被覆写。编译无法执行!

建议:接口中属性和方法 不加public和其他修饰符号 来保持代码的简洁性

子类继承抽象类实现接口:

步骤:

STEP1:使用extends继承一个抽象类 

STEP2:使用implements实现多个接口

import javax.swing.*;

interface IMessage{
    void print();
}
abstract class News{
    //抽象类中方法前面的abstract不能省略 否则就是普通方法啦!
    public abstract void getNews();
}
class MessageImpl extends News implements IMessage{
    public void  print(){
        System.out.println(" I am a Student.");
    }
    public void getNews(){
        System.out.println("I am News.");
    }
}
public class Test{
    public static void main(String[] args) {
        IMessage m=new MessageImpl();//向上转型
        m.print();
        //MessageImpl是抽象类和接口的共同子类
        News news=(News)m;//向下转型
        news.getNews();
    }
}

运行结果:

I am a Student.

I am News.

一个接口使用extends继承实现多个父接口

interface A{
    public void printA();
}
interface B{
    public void printB();
}
interface C extends A,B{
    public void printC();
}
class Impl implements C{
    public void printA(){
        System.out.println("A");
    }
    public void printB(){
        System.out.println("B");
    }
    public void printC(){
        System.out.println("C");
    }
}
public class  Test{
    public static void main(String[] args) {
A a=new Impl();
B b=new Impl();
C c=new Impl();
a.printA();
b.printB();
c.printC();
    }
}

接口的应用:

接口在实际开发过程中有三大核心应用环境:

1.定义操作标准

2.表能力

3.分布式开发中暴露远程服务方法

接口描述标准:

 

interface USB{
    void setup();//安装USB驱动
    void work();//进行工作
}
class Computer{
    public void plugin(USB usb){
        usb.setup();
        usb.work();
    }
}
class UDisk implements  USB{
    public void setup(){
        System.out.println("安装u盘驱动");
    }
    public void work(){
        System.out.println("u盘开始工作");
    }
}
class PrintDisk implements USB{
    //定义一个USB设备
    public void setup(){
        System.out.println("安装打印机驱动");
    }
    public void work(){
        System.out.println("打印机开始工作");
    }
}
public class Test{
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.plugin(new UDisk());
        computer.plugin(new PrintDisk());

    }
}

输出结果:

安装u盘驱动

u盘开始工作

安装打印机驱动

打印机开始工作

抽象类和接口的区别:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值