Java实验 实验六

实践六、接口与实现

1、Com接口定义了常量MAX、on、sum抽象方法、默认的max方法、静态方法f和私有的output Java方法。AAA类实现了Com接口

interface Com { //声明接口Com

  public static final int MAX = 100;  //等价写法:int MAX=100;

  public abstract void on();   //等价写法:void on();

  public abstract float sum(float x ,float y);//等价写法:float sum(float x ,float y);

        public default int max(int a,int b) {   //声明为默认方法

        outPutJava();  //调用接口中的private方法

        return a>b?a:b;

        }

        public static void f() { //声明为静态方法

        System.out.println("注意是从Java SE 8开始的");

        }

private void outPutJava(){

        System.out.println("Java");

        }

        }

 class AAA implements  Com {

    @Override

    public void on() {

        System.out.println("打开电视");

    }

    @Override

    public float sum(float x, float y) {

        return x+y;

    }

        }

public class test {

    public static void main(String args[]) {

        AAA a = new AAA();

        System.out.println("接口中的常量"+Com.MAX); //访问接口中的常量MAX

        System.out.println("调用on方法(重写的):");

        a.on();

        System.out.println("调用sum方法(重写的):"+a.sum(12,18));

        System.out.println("调用接口提供的default方法"+a.max(12,78));

       Com.f();   } //访问接口中的静态方法f

}

运行结果:

接口中的常量100

调用on方法(重写的):

打开电视

调用sum方法(重写的):30.0

Java

调用接口提供的default方法78

注意是从Java SE 8开始的

2、使用接口回调技术
interface  ShowMessage {//声明接口
   void 显示商标(String s);
   default void outPutStart(){
      System.out.println("********");
   }
}
class TV implements ShowMessage {
   public void 显示商标(String s) {
       System.out.println("tvtvtvtv");
       System.out.println(s);
       System.out.println("tvtvtvtv");
   }
}
class PC implements ShowMessage {
   public void 显示商标(String s) { 
       System.out.println("pcpcpcpc");
       System.out.println(s);
       System.out.println("pcpcpcpc");
   }
}
public class text {
   public static void main(String args[]) {
       ShowMessage sm=new TV(); //声明接口变量存放对象的引用
       sm.显示商标("长城牌电视机");      //接口回调。
       sm=new PC();                     //接口变量中存放对象的引用
       sm.outPutStart();
       sm.显示商标("华为个人电脑");    //接口回调
       sm.outPutStart();
   } 
}

运行结果:

tvtvtvtv

长城牌电视机

tvtvtvtv

********

pcpcpcpc

华为个人电脑

pcpcpcpc

********

3、将6题改为匿名内部类的形式

interface  ShowMessage {//声明接口

    void 显示商标(String s);

    default void outPutStart(){

        System.out.println("********");

    }

}

class PC implements ShowMessage {

    public void 显示商标(String s) {

        System.out.println("pcpcpcpc");

        System.out.println(s);

        System.out.println("pcpcpcpc");

    }

}

public class text {

    public static void main(String args[]) {

        ShowMessage sm=new ShowMessage() {

            @Override

            public void 显示商标(String s) {

                System.out.println("tvtvtvtv");

                System.out.println(s);

                System.out.println("tvtvtvtv");

            }

        }; //声明接口变量存放对象的引用

        sm.显示商标("长城牌电视机");      //接口回调。

        sm=new PC();                     //接口变量中存放对象的引用

        sm.outPutStart();

        sm.显示商标("华为个人电脑");    //接口回调

        sm.outPutStart();

    }

}

4、简化7题

interface  ShowMessage {//声明接口

    void 显示商标(String s);

    default void outPutStart(){

        System.out.println("********");

    }

}

class PC implements ShowMessage {

    public void 显示商标(String s) {

        System.out.println("pcpcpcpc");

        System.out.println(s);

        System.out.println("pcpcpcpc");

    }

}

public class text {

    public static void main(String args[]) {

        ShowMessage sm=(String s) ->{

                System.out.println("tvtvtvtv");

                System.out.println(s);

                System.out.println("tvtvtvtv");

            }; //声明接口变量存放对象的引用

        sm.显示商标("长城牌电视机");      //接口回调。

        sm=new PC();                     //接口变量中存放对象的引用

        sm.outPutStart();

        sm.显示商标("华为个人电脑");    //接口回调

        sm.outPutStart();

    }

}

5、

interface  ShowMessage {//声明接口

    void 显示商标(String s);

    default void outPutStart(){

        System.out.println("********");

    }

}

public class text {

    public static void main(String args[]) {

        ShowMessage sm=(String s) ->{

                System.out.println("tvtvtvtv");

                System.out.println(s);

                System.out.println("tvtvtvtv");

            }; //声明接口变量存放对象的引用

        sm.显示商标("长城牌电视机");      //接口回调。

        sm=(String s)-> {

                System.out.println("pcpcpcpc");

                System.out.println(s);

                System.out.println("pcpcpcpc");

            };                     //接口变量中存放对象的引用

        sm.outPutStart();

        sm.显示商标("华为个人电脑");    //接口回调

        sm.outPutStart();

    }

}

6、接口参数:方法的参数是接口类型

interface SpeakHello {

    void speakHello();

}

class Chinese implements SpeakHello {

    public  void speakHello() {

        System.out.println("中国人习惯问候语:你好,吃饭了吗? ");

    }

}

class KindHello {

    public void lookHello( SpeakHello hello) { //接口SpeakHello类型变量hello做参数

        hello.speakHello();    //接口回调

    }

}

public class test {

    public static void main(String args[]) {

        KindHello a = new KindHello();

        Chinese  ccc  = new Chinese();

        a.lookHello(ccc );

        a.lookHello(new SpeakHello(){

            public  void speakHello() {

                System.out.println("英国人习惯问候语:你好,天气不错 ");

            }});

        a.lookHello( ()->{

            System.out.println("码农习惯问候语:no bug");} );//向参数传递Lambda表达式的值

    }

}

运行结果:

中国人习惯问候语:你好,吃饭了吗?

英国人习惯问候语:你好,天气不错

码农习惯问候语:no bug

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值