1 this关键字
可以用在构造方法、实例方法当中。this代表访问当前方法的对象,也就是说哪个对象 调用这个方法,this就是哪个方法。
this :每个对象中,保存自身地址的一个引用类型变量 this 就表示当前对象 能做什么 1在成员方法或者构造方法中,区分成员变量和局部变量 this.xxx 2在构造方法中,重载调用当前类中其他构造方法当必须写在构造方法第一行 this(xxxx) 3return this 返回 当前对象的内存地址,可以链式调用 谁调用这个方法,this就是谁 注意 this不能使用在静态方法中
2 成员变量和局部变量
变量声明的位置决定变量作用域
变量作用域确定可在程序中按变量名访问该变量的区域
2.2 成员变量和局部变量的区别
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
初始值不同
Java会给成员变量一个初始值
Java不会给局部变量赋予初始值
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级
2.3 链式调用
3 static修饰
static可以用来修饰
成员变量:静态变量,可以直接通过类名访问
成员方法:静态方法,可以直接通过类名访问
代码块:静态代码块,当Java虚拟机加载类时,就会执行该代 码块
3.1 静态语句块
3.2 实例语句块
4 封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来 实现对隐藏信息的操作和访问
4.1 封装的步骤
1、修改成员变量的可见性(将其改为priv) 2、为成员变量创建get和set方法 3、加控制语句一般加在set方法里面 4、如果一个类当中将成员变量私有化之后,然后只提供了一个get方法则这个属性就 是只读属性(用的比较多) 5、如果一个类当中将成员变量私有化之后,然后只提供了一个set方法则这个属性就是 只写属性(用的比较少)
4.2 封装的好处
便于使用者正确使用系统,防止错误修改属性
有助于系统之间的松耦合,提高系统独立性
提高软件的可重用性
降低了构建大型系统的风险
5 包
5.1 概念
在java当中使用package关键字定义包
5.2 作用
目的是为了解决类的命名冲突问题
5.3 包的命名规范
包名由小写字母组成,不能以圆点开头或结尾
包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
包名后续部分依不同机构内部的规范不同而不同
创建包之后,可以在其他类当中使用import关键字导入这个包当中的成员
5.4 使用包的注意事项
一个类同时引用了两个来自不同包的同名类必须通过完整类名来区分
每个包都是独立的,顶层包不会包含子包的类
package和import的顺序是固定的
package必须位于第一行(忽略注释行)
只允许有一个package语句 其次是import 接着是类的声明
5.5 权限控制
6 继承
6.1 概述
6.2 继承实现步骤
1. 编写父类
2. 编写子类,使用extends关键字继承
注意:java当中的继承具有单根性,即一个子类只能有一个直接父类
6.3 子类访问父类成员
1. 父类的非私有成员可以直接访问
2. 可以通过this关键字访问
3. 特殊情况下可以通过super关键字访问
6.4 继承条件下的构造方法
子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法
系统默认调用父类的无参构造方法
子类构造方法通过super显式调用父类的有参构造方法,执行父类相应构造方法,而不执行父类无参构造方法
子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
无论什么时候,都要在父类当中显示创建一个默认的无参构造方法以被子类调用
6.5 注意
如果在子类构造方法中,没有显示出现super() 也没有出现 this(xxx) 则 默认有一个super() 调用父类无参构造
并且 super(xxx) 必须出现在子类构造方法 第一行 所以 this(xxx) 和 super(xxx) 不能同时出现
因为构造方法第一行有super()调用父类构造,所以 某一个类如果构造方法私有化了,那么该类不会再被继承
7 方法重写
. 方 方法的重写也叫方法覆盖
子类根据需求对从父类继承的方法进行重新编写
重写时,可以用super.方法的方式来保留父类的方法构造方法不能被重写
在输出某个对象的时候,会默认调用这个对象的toString方法
7.1 重写规则
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类 父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法
子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(注: 静态方法中无法使用super)
父类的私有方法不能被子类覆盖
不能抛出比父类方法更多的异常