抽象类与接口

抽象类中能定义普通方法  属性

抽象类里面不止有抽象方法

有抽象方法的类一定是抽象类

抽象类虽然不能实例化,但是可以有构造函数

子类继承父类   在创建子类对象实例的时候 会先创建父类实例,此时抽象类的构造器就能被调用了

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修饰的方法所有方法体的

 

接口不能有代码块

 

太菜了

 

posted @ 2021-11-06 09:38  霸王龙168  阅读(33)  评论(0)    收藏  举报