块
块{ }是一个作用域
{ }写在方法中:普通语句块|局部代码块 执行时机:方法调用的时候
{ }写在类中方法外:构造块 执行时机:创建对象时
static{ }写在类中方法外:静态块 执行世纪:类加载时
构造块中的代码先于构造器中的代码之前执行,因为在编译时,编译器会自动把构造块中的代码编译到构造器代码之前——>反编译工具
如果有多个构造块,则从上到下依次执行
静态块中的内容在类第一次加载完成之后,只执行一次。
如果有多个静态块,则从上到下依次执行
静态块——main——构造块——构造器
Debug:调试工具
可以查看代码程序运行期间的执行流程,可以观察每执行一步的数据的变化
1.打断点
2。debug运行
GC垃圾回收
可回收的对象垃圾:
1.匿名对象
2.对象无引用状态
程序员无权操作调用垃圾回收机制,可以通过System.gc()通知
包
不要定义与jdk相同的包,相同的类,否则会引起很多你觉得莫名其妙的问题
不需要导包的情况:
1.java.lang包下的内容
2.同包下的内容
如果使用非当前包下内容:
1.使用手写全名 包名+类名,只在当前位置有效
2.import导包
3.*模糊匹配 不会影响运行效率,只会影响编译效率
4.静态导入 只导入静态的内容(属性|方法)
javabean
一系列类的统称:根据一些对象抽取共性定义的类成为模板类|图纸
1.类是公共的
2.至少提供一个空构造
3.私有的属性
4.公共的访问方式
安全隐患问题:先要在外部不允许直接操作成员
介绍一个关键字private,成员修饰符
私有的,只能在当前本类中使用,外部类中无法使用
属性一旦私有,就要配合设置器和访问器使用setter getter
私有的属性一定安全么?1.不允许外部直接操作 2.设置器和访问器是方法,可以进行逻辑判断
注意:以后自定义的模版类,属性都私有,并且同时提供一对公共的访问方式设置访问器
面向对象的三大特性:封装 继承 多态
封装:隐藏内部的实现细节,对外提供公共的访问方式
方法,属性私有化是封装具体的体现
私有是封装,封装就是私有?不对,私有是封装,封装不仅仅是私有
好处:1.提高代码的复用性 2.提高代码的安全性
继承
继承:子承父业
子类|派生类:继承别的类的类
父类|基类、超类:被继承的类
继承如何使用:
子类 extends 父类
继承的优点:
子类一旦继承父类就可以使用父类中所有的内容
提高代码的复用性
子类定义扩展的内容,子类独有的内容
特点:
java是单继承机制,但是可以实现接口
一个类可以有多个子类,但是一个子类只能有一个父类
单继承的优点:使用简单
单继承的缺点:不便于后期维护
面向对象的设计原则之一:开闭原则:对修改关闭,对扩展开放
修饰类的符号只能有两个:public|default
权限修饰符,内容被访问的权限
本类 | 同包类 | 不同包的子类 | 不同包的其他类 | |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | |
default | Y | Y | ||
private | Y |
特点:都是成员修饰符,不能修饰局部,default关键字默认的,省略不写
重载和重写
方法的重载:
同一个类中的多个方法
方法名相同
参数列表不同
方法的重写:
1、不同的类
2、继承|实现
3、方法签名相同
如果子父类中构成方法的重写,子类对象调用时候会调用子类重写的那个方法,对父类的方法进行屏蔽
检测方法重写的方式:
1.左侧会出现向上的三角形