邢台做网站服务商,wordpress自定义文章标题字体,直接打开,郑州seo优化公司排名一个类中有抽象方法#xff0c;则必须声明为abstract#xff08;做为抽象类#xff09;#xff0c;抽象类不能实例化。子类继承抽象类#xff0c;必须对所有的抽象方法重写#xff0c;否则依然有抽象方法#xff0c;还是抽象的#xff0c;无法实例化。故抽象类常做为基…一个类中有抽象方法则必须声明为abstract做为抽象类抽象类不能实例化。子类继承抽象类必须对所有的抽象方法重写否则依然有抽象方法还是抽象的无法实例化。故抽象类常做为基类。
一个类中所有方法都是抽象方法那么该类就可以使用接口来实现。
在Java语言中接口interface默认是公开的public。这意味着当你定义一个接口时你不需要显式地将其声明为public它默认就是public的。
例如以下两种定义方式是等效的 public interface MyInterface { void myMethod(); } interface MyInterface { void myMethod(); } 在第二种情况下虽然没有在接口前加上public关键字但接口仍然默认是public的。
请注意接口内的常量常量成员变量和方法默认是public static和public abstract的这意味着可以直接通过接口名来访问它们而不需要创建接口的实例。可以显式地给这些常量和方法添加public关键字但这并不是必需的因为它们是默认公开的。 例如以下两种定义方式是等效的 public interface MyInterface { public static final int MY_CONSTANT 10; public abstract void myMethod(); } interface MyInterface { static final int MY_CONSTANT 10; abstract void myMethod(); } 另外虽然Java语言允许你显式地在接口上使用public关键字但实际上由于接口默认是public的这些显式声明通常是不必要的。
在Java编程语言中接口Interface是一个非常重要的概念具有多重意义。以下是接口在Java中的主要意义
定义行为规范接口定义了一组方法这些方法由实现该接口的类来提供具体实现。这提供了一种机制允许类遵循特定的行为规范或契约而无需知道实现这些方法的具体细节。实现多态接口是实现多态性的关键工具之一。通过接口我们可以创建一个接口类型的引用该引用可以指向实现该接口的任何类的对象。这使得我们可以在不修改现有代码的情况下将新的实现添加到系统中从而增强了系统的可扩展性。解耦接口有助于降低类之间的耦合度。通过将功能划分为独立的接口我们可以减少类之间的直接依赖关系从而使代码更易于维护、测试和重用。抽象接口提供了一种抽象机制允许我们只关注对象的行为而不是其具体实现。这有助于我们创建更通用、更灵活的代码。实现代码重用多个类可以实现同一个接口这意味着它们可以共享相同的方法签名。这有助于减少代码冗余提高代码重用性。支持回调接口经常用于实现回调机制即允许一个对象在某个事件发生时调用另一个对象的方法。这在事件驱动编程中非常常见例如当用户点击按钮或触发其他事件时程序会调用相应的回调函数。
总结
1接口中的所有方法都是public abstact
2与public 类一样接口也必须定义在与接口同名的.java文件中
3在接口中声明方法时不能使用native、final、synchronized、protected等说明符。
4与类的继承不同的是要使用接口需要编写一个类去实现该接口使用implements关键字而不是extends并要给出接口中的所有方法的具体实现。
5Java要求在覆盖或者实现方法时覆盖或者实现的方法设置的访问权限必须高于或等于被覆盖或实现的访问权限。方法的4种访问说明符的访问权限从高到低分别是public、protected、default不加访问说明符时、private。接口中的所有方法都是public访问权限因此在实现接口时方法的访问权限只能是public。
6接口与抽象类的区别是接口只是定义了实现它的类应该用什么方法相当于为类的实现制定了一个规约而抽象类除了抽象方法外还可以定义一些方法的默认实现。如何在抽象类与接口间取舍呢当需要一个公共实现来简化子类的创建时使用抽象类比较合适。如果是对外提供一个统一的操作模型则使用接口更加合适。
7接口中的数据成员默认都是public公共的、static静态的常量因此在接口中声明时可以省略public static final。接口中的静态常量通过“接口名称.常量名称”的方式进行访问。如下面代码Week.java文件中定义的接口Week。可以使用Week.FRIDAY如果某个类实现了这个接口也可以这个类名来访问“实现接口的类名.接口中定义的常量名”。当然在接口或者实现接口的类内部访问静态常量直接访问即可。
package com.test;public interface Week {int SUNDAY 0; //等价于public static final int SUNDAY 0; 下同int MONDAY 1;int TUESDAY 2;int WEDNESDAY 3;int THURSDAY 4;int FRIDAY 5;int SATURDAY 5;}class DoSomethingWithWeek implements Week {void doWeek(int day) {switch (day) {case SUNDAY:System.out.println(星期天);break;case MONDAY:System.out.println(星期一);break;}}public static void main(String[] args) {// 实现接口的类中使用接口中定义的常量的集中方式System.out.println(Week.SUNDAY); // 使用接口名.常量名称方式使用接口中的常量System.out.println(SUNDAY); // 直接使用“常量名”System.out.println(DoSomethingWithWeek.SUNDAY); // 使用实现接口的类名.常量名称方式使用接口中的常量DoSomethingWithWeek d new DoSomethingWithWeek(); // 创建实现接口的类的实例d.doWeek(SUNDAY); // 在类的方法中使用接口中的常量}
}
8当一个类实现一个接口时它必须提供该接口中所有抽象方法的实现。这是Java中实现接口的基本规则。然而除此之外该类还可以定义自己的新方法。这些方法并不需要在接口中声明也不需要在接口的所有实现类中都有。它们是这个类特有的功能。
以下是一个简单的例子
// 定义一个接口
public interface MyInterface {void interfaceMethod(); // 接口中的抽象方法
}// 创建一个类实现该接口
public class MyClass implements MyInterface {// 实现接口中的抽象方法Overridepublic void interfaceMethod() {System.out.println(Implementing interface method);}// 在类中定义自己的新方法public void myNewMethod() {System.out.println(This is a new method in MyClass);}public static void main(String[] args) {MyClass obj new MyClass();// 调用接口方法obj.interfaceMethod();// 调用类的新方法obj.myNewMethod();}
}