抽象类与接口
Posted 霸王龙168
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类与接口相关的知识,希望对你有一定的参考价值。
抽象类中能定义普通方法 属性
抽象类里面不止有抽象方法
有抽象方法的类一定是抽象类
抽象类虽然不能实例化,但是可以有构造函数
子类继承父类 在创建子类对象实例的时候 会先创建父类实例,此时抽象类的构造器就能被调用了
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修饰的方法所有方法体的
接口不能有代码块
太菜了
抽象类与接口的区别
抽象类的定义:
成员属性:可以是变量,也可以是常量
成员方法:可以抽象,也可以非抽象(比如:构造方法是一定会有的)
接口类的定义:
成员属性:只能是常量(public static final)
成员方法:只能是抽象(接口没有构造方法,像太监没有小JJ)
多态的区别:
类与类:
继承,单一继承(亲爹只有一个)
类与接口:
实现,单一、多重实现(可以认多个干爹)
接口与接口:
继承,单一、多重继承(可以认多个干爹)
设计理念区别:
抽象类被继承体现的是:“is a”的关系。抽象类中定义的是该继承体系的共性功能。(例如亲爹:直属血缘关系)
接口被实现体现的是:“like a”的关系。接口中定义的是该继承体系的扩展功能。(例如干爹:认契、过继关系)
以上是关于抽象类与接口的主要内容,如果未能解决你的问题,请参考以下文章