第七天继承之抽象

抽象类的产生:

分析事物时,发现了共性的内容,就会出向上的抽取,就会发生一种特殊的情况,就是方法的功能,但方法的主体不同,这个时候也可以抽取,但只能抽取方法的声明,不抽取方法的主体,这就是一个抽象方法.

比如猫和狗都还是动物,都会叫,但他们的叫声不同,这个时候就可以只抽取叫这个方法出来,而不必写怎么叫,这个方法就是抽象方法.

抽象方法:

只有方法声明,而没有具体的方法.java中的抽象方法用abstract修饰.

方法名后面直接跟一个分号,而不是花括号

例如:Public abstract 返回类型 方法名(参数);

凡是没有方法体的方法必须使用关键字abstract修饰

凡是含有抽象方法的类就是抽象类

抽象类:

抽象类: 抽象类就是不能被实例化的类,通常作为一个类的最顶层的父类,用底层实现具    体的事物,顶层表示共性,包含抽象方法的类必须声明为抽象类,也可以不含有任    和抽象方法.

抽象类定义:abstract class 类名{};

抽象类的修饰符:必须为public或者protected,缺省的情况下默认为public

抽象类不能被实例化,不能new 原因: 如果可以new出来了,就可以调用方法,而抽象方 法没有主体,根本就没法运行

抽象类的使用:定义继承抽象类,将抽象方法进行重写,创建子类的对象.(如果子类没有重  写所有的父类抽象方法那么子类也是抽象方法)

特点

抽象类和抽象方法都必须要被abstract修饰

抽象类不一定有抽象方法()

抽象方法一定在抽象类中

不能new出抽象类的对象,但可以定义一个抽象类的引用(抽象类也可以实现多态)

只有重写了抽象类的所有抽象方法,器子类才能被穿件否则子类还是一个抽象类最后必 须有一个类来实现抽象方法

细节

抽象类可以没有抽象方法,有什么意义呢,不让这个类创建对象,方法可以直接让子类去 使用(适配器设计模式).

Abstract 不可以与paivate 共存 因为私有方法无法继承也就不存在覆盖.Final后面学 Static后面学


猜你喜欢

转载自blog.51cto.com/10760006/2156374