抽象方法与接口
抽象方法:
父类定义方法但是不实现,由子类实现
抽象方法不能有方法体;
抽象方法必须被abstract修饰。
例如:public abstract Resource change(double newTemp);
有抽象方法的类一定是抽象类,类也必须被abstract修饰
抽象类不能被实例化,他的非抽象子类可以实例化
白色箭头表示抽象方法继承重写
绿色箭头表示单一继承重写
public class Demo02 {
public static void main(String[] args) {
Shape s = new ChangFangXing("长方形",5,6);
System.out.println(s.getName()+" 的面积是: "+ s.area());
}
}
//父类抽象方法
public abstract class Shape {
private String name = "" ;
//构造方法
public Shape(String name){
this.name = name ;
}
//拿
public String getName() {
return name;
}
//抽象方法
public abstract int area();
}
//子类
public class ChangFangXing extends Shape {
//子类特有的属性
private int chang = 0 ;
private int kuan = 0 ;
//子类构造方法
public ChangFangXing(String name,int chang,int kuan){
//调用父类的构造方法
super("长方形");
this.chang = chang ;
this.kuan = kuan ;
}
public int getChang() {
return chang;
}
public int getKuan() {
return kuan;
}
//重写
@Override
public int area() {
return chang*kuan ;
}
}
接口
只定义抽象方法。关键字为:Interface
注意:接口中属性默认是public static final类型的。定义时候必须初始化
接口中的方法默认是public abstract类型的
实现接口用 implements
接口不能实例化
接口是可以多继承的
接口可以写些啥?
1,抽象方法 2,常量属性 3,静态的非抽象方法(JDK1.8+)//1.8版本以上
public static void main(String[] args) {
MyInterface in = new MyClass();
in.method();
}
public interface MyInterface extends A,B{
// public static final
int I = 1;
void method();
public static void staticMethod(){
System.out.println(" MyInterface staticMethod ");
}
}
public class MyClass implements MyInterface {
@Override
public void method() {
System.out.println(" MyClass -- method ");
}