抽象类和抽象方法 abstract
抽象方法
只有规范,而没有明确的方法体的方法。抽象方法 必须 由子类全部实现。
抽象类
包含抽象方法的类就是抽象类,关键字abstract。
abstract class Pet{
abstract void eat();//抽象方法
}//abstract在class关键词前面
public class dog extends Pet{
int age;
String name;
void eat(){
System.out.println("吃东西");
}
}
抽象类用来规范,通过子类具体实现。
注意事项
- abstract类不能new,必须通过构造子类
- 有抽象方法的类只能定义为抽象类
- 抽象类只能被继承
- 抽象方法必须被继承
- 可以有构造器,但是只能由子类调用
接口 interface
什么是接口
一种特殊的抽象类,将规范和具体实现分离开,有助于实现不同要求的实现。
示例
public interface A{
int getsth();
}
public interface B{
void SetData();
}
通过接口,可以完成类似多继承的操作,即一个子类有多个父类;该子类必须在自己的类中完成所有接口拥有的方法。
public class C implements A,B{
public int getsth(){函数体}
public void SetData(){函数体}//要完成所有接口的要求
}
细节
C c=new C();//可以调用A和B的方法
A a=new C();//不能调用B的方法,需要强制转换才能使用B的方法
用接口来引用变量,可以使用本接口的所有方法,但无法使用其他接口的方法
接口的多继承
interface D extends A,B{
void test();
}
public class ju_ti{
实现所有方法;
}
成员
接口的数据成员默认为static final 类型
成员函数默认为public abstract方法
默认方法和静态方法
静态方法 default
在接口中的一些具体实现
interface A{
default void L(){
函数实现;
}
}