java接口
我们知道知道java中只支持单继承,但如果我们想定义一些功能,想让一个子类都继承实现,没办法做到,所有Java提供了接口这个概念,这样我们就可以用一个子类去实现多个接口。我们可以理解为接口就是特殊的抽象类
接口可以包括数据成员,但是数据成员必须是常量,其值一旦被初始化后,是不允许修改的,这些数据成员通常为全局变量。
为了避免在接口中添加新方法后要修改所有的实现类,接口中允许定义默认方法(default方法)。
定义接口需要使用关键字interface
定义接口实例:
interface A{ //定义一个接口
public static final String message=”HelloWorld”; //全局常量
public abstract void print(); //定义抽象方法
default public void otherprint(){ //定义可以带方法体的默认方法
System.out.println(“默认方法”);
}
}
接口中成员属性默认是public static final修饰,成员方法是public abstact修饰,所以上述定义可以简写
代码演示:
interface A{ //定义一个接口
String MESSAGE=”HelloWorld”; //全局常量
void print(); //定义抽象方法
default void otherprint(){ //定义可以带方法体的默认方法
System.out.println(“默认方法”);
}
}
接口使用原则:
1.接口必须有子类,子类依靠implements关键字可以同时实现多个接口;
2.接口的子类(如果不是抽象类)必须实现接口之中的全部抽象方法;
3.接口可以利用对象多态性,利用子类实现对象的实例化
4.接口和普通的类一样,本身也有数据成员和方法,但数据成员一定要初始赋值,并且此值不能再有修改,定义的方法可以有抽象方法和默认方法,抽象方法abstact关键字可以省略,默认方法需要带上default关键字,默认方法可以带有方法体。
5.默认方法的调用和普通方法的调用一样
接口的使用:
我们来举个例子,定义一个抽象类People,一个普通子类Student,两个接口。子类Student继承父类People,并实现接口Study,Write
代码演示:
//构建一个抽象类People
abstract class People{
//父类属性私有化
private String name;
private int age;
//提供父类的构造器
public People(String name,int age){
this.name = name;
this.age = age;
}
//提供获取和设置属性的getter()/setter()方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
//提供一个抽象方法
public abstract void talk();
}
//定义一个接口
interface Study{
//设置课程数量为3
int COURSENUM = 3;
//构建一个默认方法
default void stu(){
System.out.println(“学生需要学习”+COURSENUM+”门课程”);
}
}
//再定义一个接口
interface Write{
//定义一个抽象方法
void print();
}
//子类继承People,实现接口Study,Write
class Student extends People implements Study,Write{
//通过super关键字调用父类的构造器
public Student(String name, int age) {
super(name, age);
}
//实现父类的抽象方法
public void talk() {
System.out.println(“我的名字叫”+this.getName()+”,今年”+this.getAge()+”岁”);
}
//实现Write接口的抽象方法
public void print() {
System.out.println(“学生会写作业”);
}
}
public class InterfaceDemo{
public static void main(String[] args) {
//构建student对象
Student student = new Student(“dodo”, 22);
//调用父类的抽象方法
student.talk();
//调用接口Write中的抽象方法
student.print();
//调用接口Study中的默认方法
student.stu();
}
}
接口的实现:类名 implements 接口名,有多个接口名,用“,”隔开即可。
相关阅读
这里主要记录一些关于Jg Grid 插件的使用经验: 对于Jquery 的Grid 插件,原本并没有接触过,是由于公司业务上要对原有项目根据现有需
转自:https://blog.csdn.net/qq_36530458/article/details/79778373<block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做
PIL vs Pillow PIL: Python Imaging Library,是python的图像处理库。由于PIL不兼容setuptools,再加上更新缓慢等因素,Alex Clark等
在excel的函数中,最为基础的莫过于是加减乘除,那么,今天小编就教你们乘法函数的运用。excel乘法函数使用的步骤:1、A1*B1=C1的Excel乘