抽象类和接口对比
抽象类
特点:
abstract修饰,只能被单继承
abstract修饰抽象方法,只有方法名字,不能有实现(方法体)(普通方法可以有方法体【即可以有方法实现】)
不能new抽象类,只能靠子类实现,他只是一种约束!
抽象类中可以有普通方法
抽象方法必须写在抽象类中,抽象方法必须是Public的;
它是对抽象(思想)的抽象!
继承了他的子类,必须实现他的抽象方法,除非子类也是抽象类(子类的子类还是要实现父亲和爷爷的抽象方法)
问题:
存在构造器吗?
存在,不能直接new ,只能由非抽象子类调用
存在的意义?提高开发效率
接口
只有规范,自己无法写方法,他是专业的约束,约束和实现分离
二者对比:接口是抽象类的集合,他比抽象类极端,只允许有方法定义,不能有实现,方法默认是抽象方法,抽象类可以有普通方法,也可以有构造函数(由子类调用),接口没有构造函数
作用:
约束
定义一些方法,让不同的人实现~10人–> 1接口
接口中的所有定义都是抽象的 默认 public abstract
接口不能被实例化,==接口中没有构造方法==
implements可以实现多个接口,从而实现伪多继承
必须要重写接口中的方法~
在JAVA编程语言中是一个抽象类型,是抽象方法的集合
一个类通过实现接口的方式,从而来继承接口的抽象方法。(接口只可以被实现,不能被继承)
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。
类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要重写接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类
继承多态对比
一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。
多种类
外部类、内部类
(可以调用外部类的属性和方法(包括私有))
静态内部类
拿不到非静态方法和属性(静态类先加载)
写在类外面的类
Java文件可以有多个类,但是只能有一个public修饰的
局部内部类(不建议)
匿名内部类
Java文件可以有多个类,但是只能有一个public修饰的