1 This
1.1 This是什么 是每个对象中,保存自身内存地址的一个引用型变量 This就表示当前对象
1.2 This能做什么
在成员方法或构造方法中,区分同名的成员变量和局部变量 this.xxx
用在构造方法中,重载调用当前类中的其他构造方法,但是必须写在构造方法第一行 this(xxx)
return this 返回当前对象的内存地址,可以链式调用
1.3 This怎么用
静态变量可以和局部变量同名 局部变量优先级高 用类名.变量名可以区分静态变量和局部变量
public MyDate(){this(1970,1,1);}调用当前类的指定构造方法,该写法只能写在构造方法第一行
public MyDate(int year, int month, int day) {this.year=year;this.month=month;this.day=day;}
链式调用t.m1().m2();
This不能出现在静态上下文中
2 static 修饰符,关键字,用来区分静态和成员
类体中使用static修饰的变量是静态变量
用static修饰的方法是静态方法
用static定义静态语句块
静态语句块,等同于静态方法
静态语句块自动执行,在程序加载阶段执行完成,并且只执行一次
适合做一些初始化工作
有多个static语句块时,从上到下依次执行
实例语句块:可以看做成员方法,没有static修饰的语句块就是实例语句块
创建对象之后立即执行,每创建一个对象就执行一次,并且在构造方法之前
3 封装
把所有组成部分组合到一起,还可以通过权限控制修饰符将数据隐藏起来,可以控制用户对类数据的
修改程度
适当的封装可以让代码更容易理解,易于维护,更提高了代码的安全性
3.1 包机制
3.1.1 package
package : 软件包机制
1 )主要解决了命名冲突问题,在类名前加命名空间
2 )完整的类名是带有包名的 , 包名.类名 才是这个类的名字
3 )package语句 必须出现在java源文件的第一行
4 )package语句是 规定编译之后的class文件保存的位置,和源文件无关
5 )命名规则 一般采用公司域名倒叙
3.1.2 import
import java.util.Date导入时间类
import java.util.*导入util下所有类
import 语句 用于把当前类中需要的其他类载入, 必须出现在class语句之上,package语句之下
java.lang.* : 该包下所有类均为系统核心类,使用时不需要导入
3.2 权限控制:
public:公共的,哪里都能访问
private:同类,只能当前类访问
default:同包,不用修饰符,同包可访问
protected:受保护的,继承权限,要么同包要么继承
同包测试:公共的√ 私有的× 默认的√ 受保护的√
不同包测试:公共的√ 私有的× 默认的× 受保护的×
继承:公共的√ 私有的× 默认的× 受保护的√
4 继承 (java中只支持单继承)
4.1 继承是什么
一个类只能继承一个父类,但是一个类可以被多个类继承
4.2 能做什么
目的:代码复用,提高效率,如果父类满足不了子类需求,可以进行覆写,可以使用多态
如果一个类没有显示继承一个类,那么该类默认继承Object
Object是java提供的一个根类,所有类都得直接或间接继承它
4.3 怎么用
语法:class 类名 extends 父类名 {父类体}
5 super
5.1 是什么 代表了父类的特征
5.2 做什么
1)代表了父类的特征 用在成员方法和构造方法中,区分父子类同名的方法和变量
2)用在子类构造中,调用指定的父类构造方法 super(xxx);如果在字了构造方法中,没有显示出现super()也没有出现this(xxx)则默认有一个super()调用父类无参构造
5.3 怎么用
区分父子类同名的属性 调用父类的构造方法
因为构造方法第一行有super()调用父类构造,某一个类如果构造方法私有化,那该类不会被继承
6 覆写/重写: { 写一个和父类一样的方法,但功能不同
1)方法名,返回值,参数列表 必须和父类一致
2)控制权限 不能比原方法拥有更低的访问权限
3)不能比原方法拥有更宽泛的异常覆写 }
特指成员方法,只有成员方法可以覆写
应用场景:当父类功能无法满足子类需求时要覆写
@override:是源码注解,编译时会判断是否的覆写,防止拼错,可以降低错误率