P401-P410接口

p401抽象类最佳实践-模板设计模式

image-20220107132118648

``

package singleTon;
​
public class Abstract {
    public static void main(String[] args) {
        B b = new B();
        b.cal();//动态绑定,执行到job()
    }
}
abstract class A{
    public void cal(){
        long start = System.currentTimeMillis();
        job();
        long end= System.currentTimeMillis();
        System.out.println("执行时间="+(end-start));
    }
    public abstract void job() ;
}
class B extends A{
    @Override
    public void job(){
        //得到开始时间
        long num = 0;
        for (int i = 0; i <= 199999; i++) {
            num += i;
        }//得到结束时间
    }
}

P402接口

image-20220107135324315

//
public interface UsbInterface {//接口
    //接口方法
    public void start();
    public void end();
}
//
public class Camera implements UsbInterface {
    @Override
    public void start(){
        System.out.println("相机开始工作");
    }
    @Override
    public void end(){
        System.out.println("相机end工作");
    }
}
//
public class Phone implements UsbInterface {
    //类实现UsbInterface接口,规定声明方法
    @Override
    public void start(){
        System.out.println("手机开始工作");
    }
    @Override
    public void end(){
        System.out.println("手机end工作");
    }
   
}
//
public class Computer {
    //编写一个方法
    public void work(UsbInterface usbInterface){
        //通过接口来调用方法
        usbInterface.start();
        usbInterface.end();
    }
}
//
public class Interface {
    public static void main(String[] args) {
        Camera c =new Camera();
        Phone p = new Phone();
        Computer cp = new Computer();
        cp.work(c);//把相机接入计算
        cp.work(p);
    }
}

P404接口基本介绍

image-20220107144317177

public interface AInterface {
    //写属性
    public int n1=10;
    //写方法,在接口中抽象方法可以省略
    public void hi();
    //在jdk8之后,可以默认实现方法,需要用default关键字修饰
    default public void ok(){
        System.out.println("ok.....");
    }
    //jdk8后,可以有静态方法
    public static void cry(){
        System.out.println("静态方法");
    }
}

image-20220107145626783

image-20220107150008738

package In.interface01;
public interface DBinterface {//项目经理写的
    public void connect();//连接方法
    public void close();//关闭方法
}
​
//
package In.interface01;
​
public class Mysql implements DBinterface{//A程序员
    @Override
    public void connect(){
        System.out.println("连接mysql数据库");
    }
    @Override
    public void close(){
        System.out.println("关闭mysql");
    }
}
//
package In.interface01;
​
public class Oracle implements DBinterface {
    @Override
    public void connect() {
        System.out.println("连接oracle数据库");
    }
    @Override
    public void close() {
        System.out.println("关闭oracle数据库");
    }
}
//
public class Interface03 {
    public static void main(String[] args) {
        Mysql mysql = new Mysql();
        t(mysql);//输出连接mysql数据库关闭mysql
        Oracle oracle = new Oracle();
        t(oracle);//连接oracle数据库关闭oracle数据库
        //具体是创建每个对象,调用方法,动态绑定
    }
    public static void t(DBinterface db){
        db.connect();
        db.close();
    }
}

p406接口使用细节

image-20220107154257071

public class InterfaceDetial {
    public static void main(String[] args) {
        //new IA();1.接口不能实例化
    }
}
interface IA{
  //2.接口中所有方法是public方法,接口中的抽象方法,可以不用abstract修饰
    void say();
    void hi();
}
class B implements IA{可以用alt+enter点击IA出现override重写实现3
    //3.一个普通类实现接口就必须实现该接口的所有方法
    @Override
    public void say(){
    }
    @Override
    public void hi(){
    }
}
abstract class Tiger implements IA{
    //4.抽象类实现接口,可以不用实现接口的方法
}

image-20220107204950647

package In.interface01;
​
public class InterfaceDetial {
    public static void main(String[] args) {
        //证明一下6
        System.out.println(IA.n1);//静态属性
    }
}//9.接口只能和类一样修饰符是public和默认
interface ID extends IA,IB{};//8.接口不能继承其他类,但是能够继承多个别的接口;
interface IA{
    //6.接口中的属性只能是final,而且是public static final修饰
    int n1=10;
  void say();
}
interface IB{
    void hi();
}
class Pig implements IA,IB{//5.一个类可以实现多个接口
    @Override
    public void say(){
    }
    @Override
    public void hi(){
    }
}
​

image-20220107211333073

package In.interface01;
​
public class ExtendVsInterface {
    public static void main(String[] args) {
        LiterM wukong = new LiterM("wuko");
        wukong.climbing();
        wukong.swiming();
        wukong.fly();
    }//当子类继承父类,就直接拥有父类的功能
    //如果需要扩展功能,可以通过接口的方式扩展
    //实现接口是对java单继承机制的一种补充
}
//接口
interface Fish{
    void swiming();
}
interface Bird{
    void fly();
}
//继承
class LiterM extends Monky implements Fish,Bird{
    public LiterM(String name) {
        super(name);
    }
    @Override
    public void swiming(){
        System.out.println(getName()+"通过学习学会了相鱼儿般游泳");
    }
    @Override
    public void fly(){
        System.out.println(getName()+"通过学习像鸟儿一样飞翔");
    }
}
class Monky{
    private String name;
    public void climbing(){
        System.out.println(getName()+"猴子在爬树");
    }
​
    public String getName() {
        return name;
    }
​
    public Monky(String name) {
        this.name = name;
    }
}

image-20220107230226328

P410java接口的多态

image-20220107230401779

public class Computer {
    //编写一个方法
    //1UsbInterface usbInterface 形参是接口类型UsbInterface
    //看到,接收,UsbInterface接口的类的对象实例(内含向上转型和动态绑定)
    public void work(UsbInterface usbInterface){
        //通过接口来调用方法
        usbInterface.start();
        usbInterface.end();
    }
}
​
package In.interface01;

public class InterfacePolyArr {
    public static void main(String[] args) {
        //多态数组>接口类型数组
        Usb [] usbs=new Usb[2];
        usbs[0]=new Phone_();
        usbs[1]=new Camera_();
        for (int i = 0; i < usbs.length; i++) {
            usbs[i].work();
            if(usbs[i] instanceof Phone_){
                ((Phone_) usbs[i]).call();//向下转形
            }
        }
    }
}
interface Usb{
    void work();
}
class Phone_ implements Usb{
    public void call(){
        System.out.println("手机打电话");
    }
    @Override
    public void work() {
        System.out.println("手机workong中");
    }
}
class Camera_ implements Usb{
    @Override
    public void work() {
        System.out.println("相机workong中");
    }
}
package In.interface01;

public class InterfacePolyPass {//多态的传递
    public static void main(String[] args) {
        IC ic=new Teacher();//接口类型可以指向实现该接口的类的对象实例
        IH ih=new Teacher();//如果IC继承IH接口,而Teacher类实现了IC接口
        //那么实际上相当于Teacher类实现了IC接口。
        //这就是多态的传递
    }
}
interface IH{}
interface IC extends IH{}
class Teacher implements IC{
}
public class InterfaceExercise {
    public static void main(String[] args) {
    }
}
interface A { // 1min 看看
    int x = 0;//想到等价public static final int x = 0;
}
class B {
    int x = 1;//普通属性
}
class C extends B implements A {
    public void pX() {
        System.out.println(A.x + " " + super.x);
        //System.out.println(x); //错误,原因不明确x
    }
//可以明确的指定x
//访问接口的x 就使用A.x
//访问父类的x 就使用super.x
    public static void main(String[] args) {
        new C().pX();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值