JDK8之后
例如:飞机,小鸟,风筝定义一个接口:Flyable
类和接口的关系是:实现关系类实现接口
注意此处default和static必须加,不能省略注意实现类中要是想重写接口中的非抽象方法,那么default修饰符必须不能加,否则报错
package msb.javase.oop.javase_220225_b_interface_test;
public interface TestInterface3 {
public static final int NUM = 3;
public abstract void eat();
//此处default 和 static 必须加,不能省略
public default void go(){
System.out.println('go');
}
public static void run(){
System.out.println('run');
}
}
class Test2 implements TestInterface3{
@Override
public void eat() {
}
//实现类中要是想重写接口中的非抽象方法,那么default修饰符必须不能加,否则报错
@Override
public void go() {
}
}
类是类,接口是接口,它们是同一层面的概念
注意1:static不可以省略注意2:静态方法不能重写,接口和实现类调用各自的静态方法
在JDK8之前,接口中只有两部分内容常量:publicstaticfinal抽象方法:publicabstract注意:修饰符可以省略不写
例如,手机是不是照相机继承:手机extends照相机'is-a'的关系,手机是一个照相机//说不太通上面的写法不好实现:手机implements拍照功能'has-a'的关系,手机具备照相的能力
继承和实现的区别继承:子类对父类的继承,使用场景为代码的重用实现:实现类对接口的实现,使用场景为具备一个能力
Systeout.println(TestInterfacNU;//通过接口名称访问Systeout.println(Test.NU;//通过实现类访问Testt=newTest();Systeout.println(t.NU;//通过对象访问TestInterfaceti=newTest();Systeout.println(tNU;//通过指向实现类的接口名访问
java只有单继承,但java还有多实现一个类继承其他类,只能直接继承一个父类但是实现类实现接口的话,可以实现多个接口
package msb.javase.oop.javase_220225_b_interface_test;
public interface TestInterface2 {
public static final int NUM2 = 0;
public abstract void a2(String b);
double f2 = 0.0;
void say2();
}
package msb.javase.oop.javase_220225_b_interface_test;
public class Test implements TestInterface,TestInterface2 {
@Override
public void a(String b) {
System.out.println();
}
@Override
public void a2(String b) {
System.out.println();
}
@Override
public void say() {
System.out.println();
}
@Override
public void say2() {
System.out.println();
}
}
接口的作用定义规则,只是跟抽象类不同,它是接口,不是类接口定义好规则之后,实现类负责实现即可
接口中的常量如何访问
接口中没有构造器
调用default非抽象方法:
package msb.javase.oop.javase_220225_b_interface_test;
public interface TestInterface3 {
public static final int NUM = 3;
public default void go(){
System.out.println('go');
}
}
class Test2 implements TestInterface3{
public void c(){
go();//可以直接调用
//不可以super.go();
TestInterface3.super.go();//这样也可以
}
}
如果没有全部重写抽象方法,那么这个类可以变成一个抽象类
package msb.javase.oop.javase_220225_b_interface_test;
public interface TestInterface {
public static final int NUM = 0;
public abstract void a(String b);
double f = 0.0;
void say();
}
class A implements TestInterface{
@Override
public void a(String b) {
System.out.println(b);
}
@Override
public void say() {
System.out.println('saying');
}
}
abstract class B implements TestInterface{
@Override
public void say() {
System.out.println('saying');
}
}
在JDK8之前,接口中只有两部分内容常量:publicstaticfinal抽象方法:publicabstract
接口和抽象类的区别
一旦实现一个接口,类要重写接口中的全部抽象方法
但是。。。
在JDK8之后,接口中新增非抽象方法常量:publicstaticfinal抽象方法:publicabstract非抽象方法:publicdefault/静态方法
多态的应用场合父类当方法的形参,传入具体子类的对象父类当作方法的返回值,返回具体子类对象接口当方法的形参,传入具体实现类的对象接口当作方法的返回值,返回具体实现类对象
0、接口不能创建对象TestInterface01t=newTestInterface01();//错误TestInterface01t=newStudent()//可以,接口指向了实现类--》多态比如,定义一个方法,接口为形参,传值时传一个实现类,就是多态了或者,方法的返回值是一个接口,具体返回时传一个实现类,也是多态的一种
文章为作者独立观点,不代表股票交易接口观点