Java中有两种实现多态的形式,分别是继承和接口。继承类、实现接口
1)一个是abstract class 一个是interface
2)Java的单继承原理:一个类可以实现多个接口,但是只能继承一个抽象类。但是接口与接口之间是多继承的。
3)一个类要实现一个接口,必须实现这个接口中的所有方法,而一个类继承一个抽象类,可以不实现所有抽象方法,前提是这个类也是一个抽象类。
4)接口中只能有抽象方法(Java8开始,接口方法可以有默认实现),而抽象类可以有抽象和非抽象方法。
5)接口中的权限修饰符只能是public,而抽象类可以是public、protected、default。(因为抽象方法就是为了被重写,所以不能用private修饰)
6)接口中只有static、final修饰的变量,而抽象类中不是。
Eg:抽象类---父类:图形
//图形 抽象类
public abstract class TuXing {
public abstract void mianJi();
public abstract void zhouChang();
}
//圆型 继承 抽象类
public class Circle extends TuXing{
@Override
public void mianJi() {
System.out.println("圆的面积:3.14*r*r");
}
@Override
public void zhouChang() {
System.out.println("圆的周长:3.14*2*r");
}
}
//长方形 继承 抽象类
public class Rectangle extends TuXing{
@Override
public void mianJi() {
System.out.println("长方形的面积:a*b");
}
@Override
public void zhouChang() {
System.out.println("长方形的周长:2*(a+b)");
}
}
//测试
public class TextAbstractClass {
public static void main(String[] args) {
Circle circle = new Circle();
System.out.println("圆-------------");
circle.mianJi();
circle.zhouChang();
Rectangle rectangle = new Rectangle();
System.out.println("长方形-----------");
rectangle.mianJi();
rectangle.zhouChang();
}
}
输出结果:
Eg:接口 --- 图形
//接口 图形
public interface TuXingInterface {
/**
* 计算面积
*/
public void mianJi();
/**
* 计算方法
*/
public void zhouChang();
}
//圆圈 实现接口
public class Circle implements TuXingInterface{
@Override
public void mianJi() {
System.out.println("圆的面积:3.14*r*r");
}
@Override
public void zhouChang() {
System.out.println("圆的周长:3.14*2*r");
}
}
//长方形 实现接口
public class Rectangle implements TuXingInterface{
@Override
public void mianJi() {
System.out.println("长方形的面积:a*b");
}
@Override
public void zhouChang() {
System.out.println("长方形的周长:2*(a+b)");
}
}
//测试
public class TextAbstractClass {
public static void main(String[] args) {
Circle circle = new Circle();
System.out.println("圆-------------");
circle.mianJi();
circle.zhouChang();
Rectangle rectangle = new Rectangle();
System.out.println("长方形-----------");
rectangle.mianJi();
rectangle.zhouChang();
}
}
输出结果一样。