你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

java自学笔记day08

2021-12-6 1:22:57

目录

接口

定义接口

实现类

调用


接口

定义接口

public interface MyInterFace {          //class->interface
    //抽象方法
    public abstract void absMethod();   //抽象方法必须被实现类覆盖重写,用实现类对象调用;public abstract可省略
    Character absMethod2(String name);  //返回值,参数类型可变
    //默认方法
    public default void defaultMethod1(){    //default method可直接被实现类对象调用,也可被覆盖重写
        System.out.println("这是默认方法1");
        
        privateMethod();    //调用普通私有方法
    }
    default void defaultMethod2(){      //d method可解决接口升级问题,public可省略
        System.out.println("这是默认方法2");
    }
    //静态方法
    public static void staticMethod(){  //静态方法属于接口,只能用接口调用;public可省略
        System.out.println("这是静态方法");
        
        staticPrivateMethod();  //调用静态私有方法
    }  
    //私有方法
    private void privateMethod(){   //私有方法只能被接口内方法调用
        System.out.println("这是普通私有方法");
    } 
    private static void staticPrivateMethod(){  //可被接口内static方法调用
        System.out.println("这是静态私有方法");
    }
     //常量
    public static final int NUM = 10; //final关键字修饰代表不可改变;建议大写命名
    int NUM_NUMBER2 = 20;  //接口中常量必须赋值;public static final可省略
}

实现类

public class MyInterFaceImpl implements MyInterFace {   //implement‘实现’接口,类似extends父类
    //所有抽象方法必须‘覆盖重写’;除非实现类也须为抽象类
    @Override
    public void absMethod(){                        
        System.out.println("抽象方法执行了");
    }
    @Override
    public Character absMethod2(String name){
        return name.charAt(0);
    }
    //默认方法可被覆盖重写
    @Override
    public void defaultMethod2(){
        System.out.println("覆盖重写默认方法2");
    }
    //静态方法直接用接口名调用
    //私有方法只可在接口内调用
}

调用

public class MyInterFaceDemo {
    public static void main(String[] args) {
        //MyInterFace inter = new MyInterFace; 错误,不能直接创建接口对象
        MyInterFaceImpl impl = new MyInterFaceImpl();
        //调用抽象方法
        impl.absMethod();
        System.out.println(impl.absMethod2("hacker"));
        //调用默认方法
        System.out.println("------------");
        impl.defaultMethod1();
        impl.defaultMethod2();
        //调用静态方法
        System.out.println("------------");
        MyInterFace.staticMethod();
        //调用常量
        System.out.println("------------");
        System.out.println(MyInterFace.NUM+" "+MyInterFace.NUM_NUMBER2);
    }
}
output:
抽象方法执行了
h
------------
这是默认方法1
这是普通私有方法
覆盖重写默认方法2
------------
这是静态方法
这是静态私有方法
------------
10 20