1.抽象类
//抽象类
public abstract class Person {
int x;
//抽象方法
public abstract void eat();
//构造方法
public Person() {
}
//静态方法
public static void m1() {
}
}
public class Student extends Person {
@Override
public void eat() {
System.out.println("吃饭");
}
}
public class Test01 {
public static void main(String[] args) {
Person p = new Student();
p.eat();
}
}
运行结果:
吃饭
2.接口
//接口:都是公共的抽象方法
public interface Flyable {
//静态常量
int x = 1;
//抽象方法
void fly();
void f1();
//JDK8+ 默认方法
public default void f4() {
System.out.println("f4");
}
//静态方法,接口名称直接调用
public static void f5() {
System.out.println("静态方法");
}
}
public class Bird1 implements Flyable {
@Override
public void fly() {
System.out.println("fly");
}
@Override
public void f1() {
System.out.println("f1");
}
@Override
public void f4() {
System.out.println("默认方法");
}
}
public class FlyableTest {
public static void main(String[] args) {
Flyable f = new Bird1();
//抽象方法
f.fly();
f.f1();
//默认方法
f.f4();
//静态方法
Flyable.f5();
}
}
3.函数式接口
//接口中有且仅有一个抽象方法被称为函数式接口
@FunctionalInterface
public interface A {
void m();
}
4.接口可以继承多个接口
//继承多个接口
public interface B extends Flyable, A {
}
5.类可以实现多个接口
//可以实现多个接口
public class Bird2 implements Flyable, A {
@Override
public void m() {
}
@Override
public void fly() {
}
@Override
public void f1() {
}
}
5.如果类无法提供多个抽象方法的实现,那么必须将类定义为抽象类
//如果类无法提供多个抽象方法的实现,那么必须将类定义为抽象类
public abstract class Bird implements Flyable {
@Override
public void fly() {
System.out.println("飞");
}
}