java--接口

本文深入探讨Java中接口的概念及其实现方式,包括接口如何支持多态性、子类与父类之间的引用转换规则、接口与抽象类的区别等关键知识点。

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

小计:
没有多态就没有抽象,没有抽象就没有接口,没有接口就没有java
子类引用赋值给父类引用,可以直接赋值。
父类引用给子类引用,必须强转。
强转,两边都是接口,或者右边是接口,编译器可以通过
接口没有实现对象,接口的实现类才有对象
1、接口:
特殊的抽象类
1)所有的属性都是公开静态的常量 可以省略修饰符
2)所有的方法都是公开抽象的方法 可以省略修饰符
3)没有构造方法
ClassA比IA多一个构造方法。
一个类去实现接口,如果这个类不希望也成为抽象类,就必须实现接口中的所有方法。

package chp8;
public class TestInterface{
  public static void main(String[] args){
    /*IA a=new Impl();
    a.ma1();
    a.ma2*/
    Impl i=new Impl();
    IA a=i;
    IB b=i;
    IC c=i;
    ID d=i;
    ClassE e=i;

    a.ma1();
    a.ma2();
    b.mb();
    c.mc();
    d.mb();
    d.mc();
    d.md();
    e.me();


    /*System.out.println(i instanceof IA);
  System.out.println(i instanceof IB);
  System.out.println(i instanceof IC);
  System.out.println(i instanceof ID);
  System.out.println(i instanceof ClassE);*/

  }
}
abstract class ClassA{
   public static final int M=10;
   public static final double N=2.78;
   public abstract void ma1();
   public abstract void ma2();
}
interface IA{
   public static final int M=10;
   public static final double N=2.78;
   public abstract void ma1();
   public abstract void ma2();
}
interface IB{
    void mb();

}
interface IC{
    void mc();
}
interface ID extends IB,IC{
    void md();
}
abstract class ClassE{
    public abstract void me();
}
class Impl extends ClassE implements IA,ID {
   public void ma1(){

   }
   public void ma2(){

   }
   public void mb(){}
   public void mc(){}
   public void md(){}
   public void me(){}

   }

implements 实现

接口与接口之间可以继承:
类与类之间是单继承。
一个类在继承另外一个类的同时,还可以实现多个接口

子类引用赋值给父类引用,可以直接赋值。
父类引用给子类引用,必须强转。
强转,两边都是接口,或者右边是接口,编译器可以通过

package chp8;
public class TestClassCast{
   public static void main(String[] args){
   Animal a=new Snoopy();
   Dog d=(Dog)a;
   Person p=(Person)a;
   }
}
class Animal{}
class Dog extends Animal{}
//class Person{}
interface Person{}
class Snoopy extends Dog implements Person{}

作用(面试)
利用接口实现多继承,不会破坏类之间树状关系的简单性。
SUN公司目的接口不主要是多继承
接口所有的方法全是抽象方法
定义了接口,就是定义了标准—-就是弱耦合性
任何弱耦合性,都需要标准的支持

package chp8;
public class TestInterface2{
  public static void main(String[] args){
    Lamp I=new Lamp();//台灯
    YellowLight light=new YellowLight();//灯泡
    I.setLight(light);//把台灯安装在台灯上
    I.powerOn();//打开台灯
    RedLight rl=new RedLight();//买个红灯泡
    I.setLight(rl);//把台灯安装在台灯上
    I.powerOn();
  }
}
interface Light{
    void on();
}

class Lamp {
    private Light light=null;
    public void setLight(Light light){
        this.light=light;
    }
    public void powerOn(){
        //light.lightOn();
        light.on();

    }

}
class YellowLight implements Light{
   public void on(){
     System.out.println("发出黄光");
   }

}
class RedLight implements Light{
   public void on(){
     System.out.println("发出红光");
   }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值