黑马程序员技术交流社区
标题:
Java08天总结
[打印本页]
作者:
CRT
时间:
2016-9-5 23:48
标题:
Java08天总结
一、代码块
1、什么是代码块:
被{}括起来的就是代码块
2、代码块的分类
A:局部代码块
用来限定变量的生命周期
B:构造代码块
用来初始化成员变量
C:静态代码块
用来加载驱动
D:同步代码块
多线程使用
3、代码块的执行顺序
1、main方法中的静态代码块
2、如果你的局部代码块在创建对象之前,这先执行局部代码。否则先执行对象的。
3、在创建对象时先去执行对象静态代码块
4、对象中的构造代码块
5、对象中的构造方法
注意:静态代码块只执行一次(无论你创建了多少个对象)。因为:该类在方法区中只被加载一次。
二、继承
1、继承的作用:
让类与类之间产生关系(子父类关系)。
2、代表继承的关键字是什么:
extends : 继承关键字左边是:子类。右边是:父类
3、继承的好处和弊端
A:好处
提高代码的复用性
提高代码的可维护性
让类与类之间产生关系是多态的前提
B:弊端:
增强了类与类之间的耦合性
开发的原则:高内聚,低耦合
高内聚:自己能够完成的事情,不用麻烦别人
低耦合:类与类之间密切度
4、继承的特点:
A:继承只支持单继承,不支持多继承。但是支持多层继承。
B:如果想用所有功能,创建最底层类的对象
C:如果想看共性的内容,看最顶层的类。
5、继承的注意事项和什么时候去使用继承
A:继承的注意事项:
继承不能继承父类私有的成员。
不能继承父类的构造方法。但子类可以访问父类的构造方法(super)
不能因为部分功能而去实现继承。
B:什么时候去使用继承
继承是中什么关系"is a",一个类是另一个类的一种。苹果是水果的一种
6、继承中成员变量的问题
A:不同名的变量
在使用过程中,如果子类没有,那么就去父类中去找。
B:同名的变量
1、变量的使用是在方法中使用。先去找局部变量
2、再去中本类中的变量
3、再去找父类中的变量
4、如果说都有,使用就近原则!
7、this和super之间的区别
A:this代表当前对象引用,谁调用我,我就代表谁。
B:super代表当了类的父类的引用。
C:super调用的范围:
调用成员变量
super.成员变量,直接访问的父类的成员变量。
调用构造方法
调用成员方法
D:this可以用来调用本类的成员,也可以访问父类的成员(如果本类没有改成员,其实访问的是子类继承下来的)
8、继承中构造方法的关系
A:子类默认会访问父类中空参构造。
B:为什么是默认就会访问?
为了初始化父类。我们使用继承关系,就是为了使用父类中成员。如果父类中的成员没有被初始化,那我们就用不了。
为了防止,在我们使用子类的时候,父类没有被初始化。系统会自动初始化。
9、加载输出
1,jvm调用了main方法,main进栈
2,遇到Zi z = new Zi();会先将Fu.class和Zi.class分别加载进内存,再创建对象,当Fu.class加载进内存
父类的静态代码块会随着Fu.class一起加载,当Zi.class加载进内存,子类的静态代码块会随着Zi.class一起加载
第一个输出,静态代码块Fu,第二个输出静态代码块Zi
3,走Zi类的构造方法,因为java中是分层初始化的,先初始化父类,再初始化子类,所以先走的父类构造,但是在执行
父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的所以
第三个输出构造代码块Fu,第四个输出构造方法Fu
4,Fu类初始化结束,子类初始化,第五个输出的是构造代码块Zi,构造方法Zi
10、继承中方法的问题
子类方法与父类中方法不同名
不同名就是子类中特有方法。
子类方法与父类中的方法同名
是重写类父类中的方法。
11、方法重写的概念
1、有子父类关系
2、方法的重写要和父类一模一样,方法名一样,返回值类型一样(和返回值类型有关系),参数列表
12、方法重写的注意事项
* a:父类中私有方法不能被重写
* 因为父类私有方法子类根本就无法继承
* b:子类重写父类方法时,访问权限不能更低
* 最好就一致
* c:父类静态方法,子类也必须通过静态方法进行重写
* 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
13、方法的重载
1、在同一个类中
2、方法名相同
3、参数列表不同
参数类型
参数顺序
4、与返回值无关
14、final 关键字
1、修饰类,类不能被继承
2、修饰方法,方法不能被重写
3、修饰变量,变量是常量,而且只能被赋值一次。会加上两个关键字 public static ,方便我们去使用。
15、final关键字 在局部变量中的使用
1、如果是修饰基本数据类型,其值不变
2、如果是修饰引用数据类型,其地址值不变, 对象中的属性值可变。
3、无论是基本数据类型还是引用数据类型,当作参数进行传递的时候,其值(基本数据类型是值,引用数据类型是地址值)都只能赋值一次。
16、final 关键字 修饰变的初始化时机
1、只要调用之前,对其赋值即可。
2、默认初始化,我们视为无效值。
3、在对象创建完成自己即可。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2