Java中接口的实现问题
发布日期:2022-02-22 18:04:11 浏览次数:11 分类:技术文章

本文共 1682 字,大约阅读时间需要 5 分钟。

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{}

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

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

转载于:https://www.cnblogs.com/MyBlog-Richard/p/5514198.html

转载地址:https://blog.csdn.net/dengsigukan55762/article/details/101976062 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:background
下一篇:C++构造函数2

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月09日 18时34分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章