abstract
abstract的意思是:抽象;在java中只要沾上abstract关键字通常会有以下结果:
1 只说话,不做事
2 不能实例化,也就是不能new
3 要想使用必须方法重写
抽象方法
1 抽象方法用abstract关键字修饰,没有方法体.
2 特点是:只说话不做实事。
3 只存在抽象方法,不存在抽象构造方法,也不存在抽象静态方法。
接口
1 接口负责功能的声明和规范。 功能具体怎么样实现由其实现类来做。
2 接口的特性:
2.1 接口中所有的方法都是抽象方法。(1.8版本之后可以有非抽象方法)
2.2 接口不可以实例化(也就是不可以new)。
2.3 一个类可以实现多个接口。(因为接口是功能的声明,一个类可以实现的功能不止一个)
2.4 一个类实现了一个接口,那么这个实现类必须实现这个接口所有的抽象方法。(抽象类例外)
2.5 接口可以用extends关键字继承接口,并且可以继承多个接口
2.6 接口不可以有构造方法(构造方法是类才有的)
对比:类之间的继承,只能继承一个;接口之间的继承可以继承多个;(接口相关的都是多个)
向上转型
1 把一个实列对象,直接赋值给父类对象或实现的接口就是向上转型。
2 转型后只能使用父类或实现类中声明过的方法,其他方法不能使用。
向下转型
1 向下转型是向上转型的逆过程:通过强制转换还原对象本身的面貌。
多态
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,
接口或父类的多种不同的实现方式即为多态。(改编自百度百科)
父类(或实现的接口)作为形式参数,子类作为实际输入参数
父类(或接口)作为形式参数,可维护性和可扩展性好。
抽象类
1 类定义时只要加上absract关键字就成为了一个抽象类
2 抽象类无法实列化
3 子类继承抽象类,需要实现所有的抽象方法。(子类也是抽象类时例外)
(如果子类本身也是抽象类,那么子类在继承抽象类时是不需要实现所有抽象方法的。)
4 抽象类中可以没有抽象方法,但是有抽象方法的类必须被定义为抽象类。
5 抽象类在实现接口或继承抽象类时,是不需要重写父类和接口的抽象方法的,而普通类需要。
抽象类和接口的区别
1 两者虽然都和抽象方法有关系,但是接口的所有方法都是抽象方法,而抽象类除了抽象方法是可以有普通的方法的。
大家联系现实中的人事物来记忆。
2 抽象类属于类是有构造函数的,它的构造函数是给子类构造函数调用的,不是用来new的 (因为抽象类无法实列化);
接口不属于类,是没有构造函数的。
3 抽象类中的非抽象方法,被子类继承后可以被子类直接使用,从而减少代码重复性。
4 一个类只能继承一个抽象类,但是可以实现多个接口。(类都是单继承,接口都是多实现和多继承)
抽象类和接口的共性
都代表抽象,和抽象方法有千丝万缕的关系。都不能实列化。