1.继承中成员变量的关系
在子类方法中访问一个变量
首先在子类局部范围找;然后在子类成员范围找;最后在父类成员范围找;若找不到报错
2.继承中构造方法的关系
子类中所有的构造方法默认都会访问父类中空参的构造方法:子类会继承父类中的数据,可能会使用,初始化子类之前,需要先完成父类数据的初始化,super();若父类中没有构造方法,子类通过super显示调用父类其他带参构造方法。
3.继承中成员方法的关系
方法重写概述:子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写。
使用特点:如果方法名不同,就调用对应的方法;如果方法名不同,最终使用是子类自己的方法
方法重写应用:子类需要父类的功能,但拥有自己特有的内容时。
注意事项:父类中私有方法不能被重写;子类重写父类方法时,访问权限不能更低;父类的静态方法子类必须通过静态方法重写。
4.final关键字
final关键字是最终意思, 可修饰类,变量,方法。
修饰类,类不可被继承。
修饰变量,变量将变为常量,只能被赋值一次。
修饰方法,方法不能被重写
final修饰局部变量:在方法内部,该变量不可以被改变;
在方法声明上,1.基本类型作为参数时,值不能被改变;2.引用类型作为参数时,地址值不能被改变
初始化时机在对象构造完毕前即可。
5.多态概述
某一个事物,在不同时刻表现出来的不同状态。
前提和提现:有继承关系;有方法重写;有父类引用指向子类对象。
多态提高了程序的维护性(由继承保证),同时提高了程序的扩展性(由多态保证);存在的弊端不能直接访问子类特有功能
多态转型:向上转型为父类引用指向子类;向下转型为父类引用转为子类对象
6.抽象类概述
Java中没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
抽象类和抽象方法必须使用abstract关键字修饰
抽象类不定有抽象方法,有抽象方法的类一定是抽象类
抽象类不能被实例化,按照多态方式,由具体子类实例化(抽象类多态)。
抽象类的子类要么是抽象类,要么重写抽象类中的所有抽象方法
7.抽象类的成员
可以定义成员变量或常量
可以有构造方法,但不能实例化,仅用于子类访问父类的初始化数据
可以有抽象方法,限定子类必须完成的动作;也可由非抽象方法,提高代码复用性
不含抽象方法的抽象类用于工具类中, 防止机制上的实例化。
8.接口
接口使用interface关键字修饰,类实现接口使用implements表示
接口不能实例化,按照多态方式,由具体的子类实例化(接口多态)
接口的子类要么是抽象类,要么重写接口中的所有抽象方法
9.接口成员
成员变量只能是常量,修饰符public static final
没有构造方法,接口主要用于扩展功能
成员方法只能是抽象方法,修饰符public abstract
10.类,接口关系
类和类存在继承关系,只能单继承,不可多层继承。
类和接口是实现关系,类可以多实现,可以在继承一个类同时实现多个接口。
接口和接口之间是继承关系,可单继承和多继承。
11.抽象类和接口区别
成员上:抽象类中可包含变量,常量,抽象方法和非抽象方法;接口中仅包含常量和抽象方法
关系上:类和类是单继承关系;类和接口是单实现和多实现的关系;接口和接口是单继承和多继承关系。
设计理念上:抽象类被继承体现 is a关系,共性功能;接口被实现体现like a关系,扩展功能。
12.包package
package语句必须位于程序中第一句;一个java文件中只能有一句;若无package,默认无包名。
13.权限修饰符
public:同一类;同一包;不同包子类;不同包其他类
protected:同一类;同一包;不同包子类
默认:同一类;同一包
private:同一类
14.类及其组成可用修饰符
类:默认;public;final;abstract。自定义以public居多
成员变量:四类修饰符;final;static。自定义以private居多
构造方法:四类修饰符。自定义以public居多
成员方法:四类修饰符;final;static;abstract。自定义以public居多
15.内部类
内部类可以直接访问外部类的成员,包括私有;外部类访问内部类成员,必须创建对象。
内部类在类中定义的位置不同分为:成员内部类和局部内部类
成员内部类外界创建方法:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
内部类一般不让外界直接访问,修饰符常见为:private 为保证数据安全;static 为让数据访问更方便,被静态修饰的成员内部类只能访问外部类的静态成员
局部内部类可以直接访问外部类的成员,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
局部内部类访问局部变量时,局部变量要使用final修饰(局部变量会随方法调用完毕而消失,此时局部对象并未从堆内存中消失,还要使用局部变量,为使数据能继续被使用,使用final修饰,这样堆内存中存储其实为常量值)
16.匿名内部类
即是内部类的简化写法
前提:存在一个类或接口(类可是具体类或抽象类);格式: new 类名或接口名() {重写方法}
本质:是一个继承了类或者实现了接口的子类匿名对象

被折叠的 条评论
为什么被折叠?



