抽象类与接口
抽象类中能定义普通方法 属性
抽象类里面不止有抽象方法
有抽象方法的类一定是抽象类
抽象类虽然不能实例化,但是可以有构造函数
子类继承父类 在创建子类对象实例的时候 会先创建父类实例,此时抽象类的构造器就能被调用了
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修饰的方法所有方法体的
接口不能有代码块
太菜了