1.抽象类1.抽象类用abstract关键字修饰的类它不能被实例化通常作为基类供其他类继承。2.抽象类里可以写普通方法但抽象方法必须写在抽象类里。3.java中只有单继承一个子类只能有一个直接父类而接口可以实现多继承一个子类可以有多个直接父类2.抽象方法1.使用abstract修饰的方法抽象方法只有名字没有具体的实现。继承了抽象类的子类必须实现这些方法重写除非这个子类也是抽象类。2.抽象方法是一种约束所有继承抽象类的子类都必须遵守这个约束。package base; //抽象类图形 public abstract class Shape { protected String color; // 构造方法 public Shape(String color) { this.color color; System.out.println(创建了一个 color 色的图形); } // 普通方法 public void setColor(String color) { this.color color; } public String getColor() { return color; } // 抽象方法计算面积子类必须实现 public abstract double calculateArea(); // 抽象方法计算周长子类必须实现 public abstract double calculatePerimeter(); // 普通方法显示信息 public void displayInfo() { System.out.println(颜色 color); System.out.println(面积 calculateArea()); System.out.println(周长 calculatePerimeter()); } }package base; //子类圆形 public class Circle extends Shape { private double radius; public Circle(String color, double radius) { super(color); // 调用父类构造方法 this.radius radius; } // 实现抽象方法 Override public double calculateArea() { return Math.PI * radius * radius; } Override public double calculatePerimeter() { return 2 * Math.PI * radius; } }package base; public class Application { public static void main(String[] args) { //new Shape();抽象类不能实例化 Circle cnew Circle(red,3); c.displayInfo(); } }创建了一个red色的图形颜色red面积28.274333882308138周长18.849555921538763.接口1.定义1.接口是Java中的一种引用类型是方法的集合用于定义类应该遵循的规范。2.接口一般只用抽象方法定义一些类的规范。package base; public interface UserService { //抽象方法默认public abstract //只有方法的定义没有实现需要实现接口的类进行重写 void run(); void go(); void swim(); void jump(); }2.接口的组成package base; public interface UserService { //1.常量默认public static final int MAX10_0000; //2.抽象方法默认public abstract的只有方法的定义没有实现 void abstractMethod(); //3.默认方法 default void defaultMethod() { System.out.println(默认方法可以有实现); privateMethod(); // 可以调用私有方法 } //4.静态方法 static void staticMethod() { System.out.println(静态方法通过接口名调用); } //5.私有方法 private void privateMethod() { System.out.println(私有方法在接口内部使用); } //6.私有静态方法 private static void privateStaticMethod() { System.out.println(私有静态方法); } }package base; public interface TimeService { void timer(); }3.接口的实现1.使用implements关键字实现接口其中实现接口的类必须重写接口中的所有抽象方法。2.一个类可实现多个接口实现类似多继承的功能// 定义接口 interface Flyable { void fly(); default void land() { System.out.println(正在降落...); } } interface Swimmable { void swim(); } // 类实现多个接口 class Duck implements Flyable, Swimmable { Override public void fly() { System.out.println(鸭子飞行); } Override public void swim() { System.out.println(鸭子游泳); } // 可以选择重写默认方法 Override public void land() { System.out.println(鸭子降落水面); } } // 测试 public class Test { public static void main(String[] args) { Duck duck new Duck(); duck.fly(); // 鸭子飞行 duck.swim(); // 鸭子游泳 duck.land(); // 鸭子降落水面 } }3.接口的继承接口也可以通过继承多个接口实现类似多继承的功能。// 接口可以多继承 interface A { void methodA(); } interface B { void methodB(); } // 接口继承多个接口 interface C extends A, B { void methodC(); } // 实现类需要实现所有方法 class MyClass implements C { Override public void methodA() { System.out.println(实现A的方法); } Override public void methodB() { System.out.println(实现B的方法); } Override public void methodC() { System.out.println(实现C的方法); } }