宝安专业网站设计公司,钓鱼网站排名假冒建设银行最多,收费报名网站怎么做,前端开发用什么语言一、JDK8开始新增的方法 默认方法不是抽象方法#xff0c;所以不强制被重写#xff1a; 但是如果被重写#xff0c;就要去掉default关键字#xff1a; public可以省略#xff0c;但是default不可以省略#xff1a; public是灰色的#xff0c;代表可以省略
但是default是…一、JDK8开始新增的方法 默认方法不是抽象方法所以不强制被重写 但是如果被重写就要去掉default关键字 public可以省略但是default不可以省略 public是灰色的代表可以省略
但是default是橙色的代表不可以省略 idea会认为可能想写的是一个abstract类的方法没有写的话idea会将其当作一个abstract类方法所以default不能省略 如果实现了多个接口多个接口存在相同名字的默认方法子类就必须对该方法进行重写因为如果不重写的话就不知道调用的是哪个接口的show方法 重写后 静态方法不能被重写 这样写不叫重写只是刚好在InterImpl中有一个重名的show方法 调用接口中的静态方法 子类把从父类继承下来的虚方法表里面的方法进行覆盖了这才叫重写但是私有的最终的静态的是不会添加到虚方法表中所以不叫重写。
二、JDK9开始新增的方法 在JDK9以前只有这种方式如果有重复代码只能重写写一个方法然后再调用show3方法 普通的私有方法给默认方法服务的 静态的私有方法给静态方法服务的 三、接口的应用 四、适配器设计模式 interAdapter类代码
public abstract class interAdapter implements interA{//设为abstract为了防止对interAdapter创建对象因为里面都是重写的空方法所以创建对象没有意义Overridepublic void method1() {}Overridepublic void method2() {}Overridepublic void method3() {}Overridepublic void method4() {}Overridepublic void method5() {}Overridepublic void method6() {}Overridepublic void method7() {}Overridepublic void method8() {}Overridepublic void method9() {}Overridepublic void method10() {}
}interImpl类代码
public class interImpl extends interAdapter{//我需要用哪个方法就重写哪个方法就可以了Overridepublic void method5(){System.out.println(只需要method5方法);}
}inter类代码
public interface interA {public abstract void method1();public abstract void method2();public abstract void method3();public abstract void method4();public abstract void method5();public abstract void method6();public abstract void method7();public abstract void method8();public abstract void method9();public abstract void method10();
}如果实现类还有父类由于Java中不能多继承那么可以让中间类去继承想要的类就可以了
五、内部类 内部类可以直接访问外部类的成员包括私有 外部类要访问内部类的成员必须创建对象 内部类的应用有很多下面列举几个常见的应用场景
1. 实现回调函数内部类可以通过将自身作为参数传递给外部类的方法用于实现回调函数。当某个条件满足时外部类调用内部类的方法来完成特定的操作。
2. 实现事件监听器内部类可以实现事件监听器接口在外部类中注册监听器对象当特定的事件发生时内部类的方法会被调用。
3. 封装复杂逻辑内部类可以访问外部类的私有属性和方法可以用于封装复杂的逻辑实现。内部类可以直接访问外部类的私有属性并且可以和外部类进行私有操作减少了类之间的耦合程度。
4. 实现迭代器内部类可以作为外部类的成员实现迭代器接口可以用于遍历外部类中的数据结构。
5. 多线程编程内部类可以作为线程的子类或实现线程接口用于实现多线程编程。
总的来说内部类的应用非常广泛能够提供更加灵活和方便的编程方式增加代码的可读性和可维护性。