成员变量和局部变量
成员变量:定义在类中
局部变量:定义在方法中
this
本质:方法调用者的地址值,谁调用就是谁
解决:变量名和外层作用域具有相同变量名,造成的遮蔽(就近原则)问题,区分成员变量和局部变量。
用于
1.引用当前对象的变量名
public class person{
private String name;
public void SetName(String name){
this.name = name;
}
}
2.调用当前对象的成员方法
public class person{
public void sayHello(){
System.out.println("Hello");
}
public void sayHi(){
this.sayHello();
}
}
3.调用当前对象的构造方法
public class person{
private String name;
private Integer age;
public Person(String name,Integer age){
this.name = name;
this.age = age;
}
public Person(){
this("甜甜",20);
}
}
- 只能在构造方法的第一个有效语句使用
- this关键字只能在类的实例方法和构造方法中使用。
包
概念
包是类的容器,利用包来划分名字空间,用于分隔类名空间,以避免命名冲突
作用
- 存放类
- 防止命名冲突
- 包允许在更广泛的范围内保护类、数据和方法。
定义
格式:
package 包名;
-
包名的前缀是全部小写的字母,并且是一个顶级域名的倒序,例如域名为
kfm.com
,声明包为com.kfm
-
包的声明必须是
java
原文件的第一条非注释性语句。
导包
-
同包下的类不需要导包
-
java.long
包下的类不需要导包
注意:命名不能用 java
和 javax
开头
访问修饰符
类
修饰符 | 同一包中 | 不同包中 |
---|---|---|
public | 可以使用 | 可以使用 |
pack-access | 可以使用 | 不可以使用 |
类成员
位置 | public | protected | 包访问修饰符(package-access) | private |
---|---|---|---|---|
同类访问 | √ | √ | √ | √ |
同包其他类访问 | √ | √ | √ | × |
同包子类访问 | √ | √ | √ | × |
不同包子类访问 | √ | √ | × | × |
不同包非子类访问 | √ | × | × | × |