抽象类概述及其特点 抽象看不懂的事物 抽象类的特点 a.抽象类和抽象方法必须用abstract修饰。 b.抽象类不一定有抽象方法,由抽象方法的类一定是抽象类或者接口。 c.抽象类不能实例化,要按照多态的方式,由子类进行实例化。 d.抽象类的子类要么是抽象类,要么重写抽象类中所有方法。
抽象类成员特点 a.成员变量:既可以是变量也可以是常量,abstract不能修饰成员变量 b.构造方法:有,用于子类访问父类数据的初始化。 c.成员方法:既可以是抽象的 也可以是非抽象的, 抽象类的小问题 A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义? 没有抽象方法可以定义为抽象类,目的只有一个就是不让其他类创建本类对象,由子类完成。 B:abstract不能和哪些关键字共存 static:被abstract修饰的方法没有方法体; 被static修饰的可以用类名.调用,但是类名.调用抽象方法是没有意义的
final : 被abstract修饰的方法强制子类重写; 被final修饰的不让子类重写,所以他俩是矛盾的
private:被abstract修饰的是为了让子类看到并强制重写, 被private修饰不让子类访问,所以他俩是矛盾的
接口的概述及其特点 从狭义的角度讲就是指java中的interface 从广义的角度讲对外提供规则的都是接口 接口的特点: a.接口用关键字表示 interface 接口名 {} b.类实现接口用implements表示 c.接口并不能实例化,按照多态的方式来实例化。 d.接口的子类可以是抽象类。但意义不大 可以是具体类,要重写接口中所有的抽象方法。 接口的成员特点 成员变量只能是常量,并且是静态的并公开的。 默认修饰符:public static final 构造方法:接口没有构造方法。 成员方法:只能是抽象方法。默认修饰符public abstract 抽象类和接口的区 A.成员区别 抽象类:可以变量,也可以常量 构造方法:有 成员方法:可以抽象也可以非抽象。 接口 成员变量:只可以常量 成员方法:只可以抽象 B. 关系区别 类与类 继承,单继承 类与接口
实现,单实现,多实现 接口与接口 继承,单继承,多继承 C.设计理念区别 抽象类 被继承体现的是:is a 的关系。抽象类中定义的是该继承体系的共性功能。 接口被实现体现的是:like a 的关系。接口中定义的是该继承体系的扩展功能。 对事物本质的抽象用抽象类,对事物功能的扩展用接口。
|