java--接口

来源:互联网 发布:矩阵组织结构的优点是 编辑:程序博客网 时间:2024/05/16 01:50

小计:
没有多态就没有抽象,没有抽象就没有接口,没有接口就没有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("发出红光");   }}
0 0
原创粉丝点击