• Java中接口的实现问题


    1.Java 接口的访问权限

     1 interface A{}//接口A包访问权限
     2 
     3   public interface A{}//接口A公有访问
     4
     5   interface A{
     6 
     7     void function1();
     8 
     9     public void function2();//function1,function2 都是public的,即接口默认方法默认是public的,也必须是public的。
                        //另,接口中的域(成员变量)默认是static,final的
    10                 //也必须是这样的。 12 }

    2.接口的类实现问题

     1  public class B implements A{
     2 
     3     public void function1(){}
     4 
     5     public void function2(){}//必须是public,因为Java编译器不允许在继承关系中访问权限降低。
     6 
     7                  //必须同时实现接口A中的全部方法,否则编译出错。这与抽象基类不同
     8 
     9                 //如果没有完全是实现抽象基类中的抽象方法,最多是不能创建对象。
    10 
    11   }

    3.接口与抽象基类的交叉问题(片面总结)

    package JavaProject;
    interface A{
        static void test1(){System.out.println("interface A");};//接口中的static方法,必须有函数体!
        void test2();
    }
    public abstract class B implements A{
        public static void test1(){System.out.println("class B");}
        public abstract void test2();//不需要实现的方法定义为抽象
        public static void main(String[]args){
            B.test1();
            A.test1();
            //new B();//error
        }
    }

    4.导出类中,基类,接口方法的覆盖重载和实现

    下面是 《Thinking in Java》Forth Edition P181 中的实例

    package interfaces;
    interface I1{void f();}
    interface I2{void f(int i);}
    interface I3{int f();}
    class C{
        public int f(){return 1;}
    }
    
    class C2 implements I1,I2{
        public void f(){}
        public int f(int i){return 1;}
    }
    class C3 extends C implements I2{
        public int f(int i){return 1;}
    }
    class C4 extends C implements I3{
        //Identical. no problem:
        public int f(){return 1;}
    }
    //!class C5 extends C implements I1{}
    //!interface I4 extends I1,I3{}

    去掉最后两行的注释编译出错,此例中覆盖,实现和重载搅在了一起,而且重载方法仅通过返回值类型是区分不开的

    在打算组合的不同接口中使用相同的方法名通常会造成代码可读性的混乱,应尽量避免这种情况。

  • 相关阅读:
    J2EE学习笔记:Filter
    J2EE学习笔记:HTTP协议
    J2EE学习笔记:JSP
    Hibernate 笔记(二) 数据关系
    top命令总结
    让gdb能打印C++中的容器类型
    ps命令注意事项
    自己动手写一个自动登录脚本gg
    request 中url拼接排序参数与签名算法
    python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法
  • 原文地址:https://www.cnblogs.com/MyBlog-Richard/p/5514198.html
Copyright © 2020-2023  润新知