抽象类与接口
抽象类中能定义普通方法 属性
抽象类里面不止有抽象方法
有抽象方法的类一定是抽象类
抽象类虽然不能实例化,但是可以有构造函数
子类继承父类 在创建子类对象实例的时候 会先创建父类实例,此时抽象类的构造器就能被调用了
abstract class Person{ // 定义一个抽象类
public Person(){
System.out.println("父 抽象类 构造器");
}
public void print() { // 普通方法
System.out.println("抽象类的普通方法");
}
// 此方法并没有方法体的声明,并且存在有abstract关键字,表示抽象方法
public abstract void func();
}
// 一个子类只能够继承一个抽象类,属于单继承局限
class student extends Person{ // B类是抽象类的子类并且是一个普通类
public student() {
System.out.println("子类构造器");
}
public void func(){
System.out.println("Hello world");
}
public void print() { // 普通方法
System.out.println("子类的普通方法");
}
}
public class test{
public static void main(String args[]){
Person a = new student(); // 向上转型
a.func(); // 被子类所覆写过的方法
a.print();
student stu = (student) a;
a.print();
}
}
输出
父 抽象类 构造器
子类构造器
Hello world
子类的普通方法
子类的普通方法
抽象类 还可以有静态方法 属性 和普通类差不多 就是不能实例化
接口
接口内可以定义属性 不过会被public static final修饰 这样应该是变成了一个常量了
java8以后 接口可以定义静态方法
接口中不止有抽象方法 还能有default方法 被deault修饰的方法所有方法体的
接口不能有代码块
太菜了

浙公网安备 33010602011771号