构造方法
static
API
2、代码块
局部代码块:
用来控制局部变量的生命周期,尽早释放内存。 -- 开发一般不用
构造代码块:
将构造方法中的共性内容,提取出来。减少代码的重复。
每次创建对象都执行,而且是优先于构造方法。 -- 开发一般不用
静态代码块:
用来做类的初始化动作,类一加载就执行。而且只执行一次。(类文件只加载一次的情况下)
一般用来加载驱动。用途:JDBC连接数据库。
main方法的类中如果有静态代码块,静态代码块优先于main方法执行的。
各个成员的执行顺序:
静态代码块 ==> 构造代码块 ==> 构造方法
其中静态代码块只执行一次,构造代码块每次创建对象都执行,而且是优先于构造方法。
3、继承 -- extends
继承的好处和弊端:
好处:
提高复用性。
提高可维护性。
让类与类产生了一个关系,是多态的前提。
弊端:
让类之间产生了一个强耦合的关系。
名词解释:
耦合:类与类的依赖关系。
内聚:类自己完成一些功能的能力。
java开发中原则:高内聚,低耦合。
Java中类的继承特点:
只允许单继承,不允许多继承,但是允许多层(多重)继承。
-- 避免了多继承中的调用不明确问题。
学顶层:顶层定义的是体系的共性的内容。
用底层:因为底层才是具体的实现,这里面的功能是最多的。
什么时候使用继承:
尽量不要为了使用部分功能而去使用继承,而继承体现的是“is a”。
使用继承的时候注意事项:
继承只能继承父类中所有非私有的成员。
继承不能继承构造方法,但可以使用super关键字访问父类的构造方法。
继承中成员变量的关系:
变量的使用:就近原则
局部 -- 成员 -- 父类 -- 报错。
this和super关键字:
this代表本类对象的引用。理解:谁来调用我,我就代表谁。
super是一个关键字,代表父类的存储空间标识。(可以理解为父类对象的引用)
super和this的用法相似:
a:成员变量
this.变量 -- 本类的成员变量
super.变量 -- 父类的成员变量
b:构造方法
this(...) -- 根据参数的匹配,调用本类的其他构造方法。
super(...) -- 根据参数的匹配,调用父类的某个构造方法
-- 保证在子类初始化之前,先初始化父类的数据。
-- 在子类的每一个构造方法中,第一行都有一条默认的语句super();
-- 所有的类都直接或间接继承自Object类。Object类中只提供了无参构造。
注意事项:
this()和super()语句必须放在构造方法的第一行。
如果父类不存在空参构造,可以:
使用super(参数。。。)调用父类的某个带参构造。
使用this(参数。。。)调用子类的某个带参构造,而根本原因就是我们想访问的那个构造能够访问父类的构造。
c:成员方法
this.方法名() -- 调用本类的其他方法
super.方法名() -- 调用父类的方法
重载与重写:
重载Overload:java允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载。与返回值类型无关。
重写Override:
在子类中,方法声明(修饰符,返回值,方法名,参数列表)与父类相同的情况。
访问权限修饰符:private 默认(什么也不写) protected public
注意事项:
a:父类中私有方法是不能被重写
b:子类重写父类的方法不能缩小父类的访问权限,不能抛出比父类更多的异常。
c:静态只能重写静态。(类的特点)
4、final关键字
修饰类:类不能被继承
修饰变量:一旦赋值就不可改变,其实是一个常量。
基本数据类型:其值一旦赋值就不可改变
引用数据类型:是指引用不再改变指向,或者说是地址值不变,但对象内部的属性还可以发生变化。
修饰成员方法: 不能被重写。
|
|