传值和传引用
注意 : 传引用,传递的是地址,如果地址传递到另一个地方,则拥有相同地址的变量,可以找到同一个对象,那么操作的数据也是相互的
This
1、在成员方法或者构造方法中,用来区分同名的局部变量和成员变量;
2、this不能出现在静态环境中
3、return this; 返回当前对象的内存地址,可以做到链式调用;
4、用在构造方法中,调用当前类中重载的构造方法this();必须在第一行
Static
1、static修饰的类体中的变量是静态变量
2、static修饰的类体中的方法是静态方法
3、static修饰的语句块是静态语句块
*注意:*静态属性是在类加载阶段执行的,是程序的开始,类加载就是访问一个类的静态属性的时候,把该类载入静态区
静态语句块:
静态语句块等价于静态方法,不过没有名字,只能执行一次
类加载完直接执行,在main方法被调用之前执行,多个静态语句块从上往下执行
动态语句块:
等价于成员方法,成员属性依赖于对象,创建对象之后立即执行,每创建一个对象执行一次
protected:
受保护的,继承权限,如果没有继承关系,同包也是可以访问的,要么有继承关系,要么同包,继承需要通过子类对象访问
extend:
private不能被继承,但是可以通过getter/setter对私有属性进行操作
构造方法不能被继承,但是可以通过在子类方法第一行写入 super(参数) 调用
目的:方法重用
最大的功能拓展:方法复写
super:
1、用在成员方法和构造方法中,可以通过super访问父类的属性
可以通过super区别子类和父类同名属性
2、super不能出现在静态上下文中,在成员方法或构造方法中,也必须是super.xxx的形式
3、用在子类构造方法中,使用super(xxx)调用父类的构造方法
如果子类构造方法中没有定义this(xxx)/ super(xxx)则默认第一行有个super()调用父类的无参构造
this()和 super()都必须出现在构造方法的第一行,所以两种写法不能同时存在
总结:
类名 : 区分同名的局部变量和静态变量
This : 区分同名的局部变量和成员变量
Super : 区分父子类中同名的变量和方法