1.接口:
package com.example.springboot.jiekouchouxianglei;
public interface TestInterface {
int get(int a,int b);
void add (String a);
//default关键字可以写方法体
default int show()
{
return 2;
}
}
package com.example.springboot.jiekouchouxianglei;
public class TestInterfaceImpl implements TestInterface {
/* @Override
public int get(int a, int b) {
return 0;
}
@Override
public void add(String a) {
}*/
}
这时候发现报错了,以前只知道实现接口必须实现其中的方法,却不知道为什么要实现。最近才了解到:
如果一个类继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法进行实现,否则该类需要被声明为抽象类。
如下则不会报错:
package com.example.springboot.jiekouchouxianglei;
public abstract class TestInterfaceImpl implements TestInterface {
/* @Override
public int get(int a, int b) {
return 0;
}
@Override
public void add(String a) {
}*/
}
接口的特性:
1.接口中的所有方法都是抽象方法(和修饰词abstract没有一点关系),也就是完全抽象。
2.接口内不能构造方法;
3.接口一旦被实现(implements),接口内的方法必须全部实现(没有abstract修饰),但是当实现类为抽象类时,接口内的方法可以不实现或者部分实现
4.接口不能被实例(new 对象),只能实例化实现接口的类。
2.抽象类:
package com.example.springboot.jiekouchouxianglei;
public abstract class TestAbstact {
abstract void show(int a);
void test(){
}
}
package com.example.springboot.jiekouchouxianglei;
public class TestAbstactImpl extends TestAbstact {
@Override
void show(int a) {
}
}
抽象类特性:
1.有抽象方法的类一定是抽象类,但抽象类里可以没有抽象方法(当然也可以抽象方法+一般方法);
2.抽象类里可以构造方法,但当其他类继承(extends)时,子类必须用super() 继承父类的构造方法;
3.抽象类一旦被继承,抽象方法在子类必须全部实现(没有abstract修饰),但是当子类也为抽象类时,父类的抽象方法可以不用实现或者部分实现;
4.抽象类不能被实例(new 对象),只能实例化实现了抽象方法的子类。