1.四大访问限定符
- private 私有的
- public 公有的
- protected 保护的
- package 当前包(相当于不同的文件夹,同名的类能放在不同的包里),包名一般都是小写的反域名
1)ctrl shift o 合理的调整包(需要的包帮助导入,不需要的帮助移除)
2)如果多个类位于同一个包,可以对导包进行简写import com.baidu.www.*;
3)*一般在超过三个类以上的时候才建议使用,否则性能低
都可以用来修饰属性和方法,其中只有public和package
可以修饰类,其他的都不行
private:(私有,范围为本类)
- 可以修饰方法和属性,不能修饰类
除了在当前类里面,其他任何位置都无法访问被private所修饰的属性,也无法调用被private修饰的方法 - 私有属性和私有方法
protected:(受保护的,范围为本包)
- 可以修饰方法和属性,不能修饰类
在当前类以及同一个包下面的其他类中可以访问,在不同包下的其他类中无法访问 - 受保护的属性和受保护的方法
public:(公有的,范围为所有)
- 可以修饰方法和属性和类
在任何地方都可以访问 - 公有的属性和公有的方法
package:(默认的,范围为本包)
- 可以修饰方法和属性和类
效果和protected完全一致 - 不写修饰符代表的就是package,又称"default"
2.访问限定符的规范
一般情况下,
- 所有的属性都必须设置为private
- 所有的方法都必须设置为public,构造方法也不例外
3.访问器方法:(通过对象.setXXX()或对象.getXXX()调用)
基于访问限定符的规范:属性基本都是private的
访问器方法是专门针对属性赋值和获取值设计的一套方法,包含两个:
一个用来设置值:
pubic void setXXX(Type XXX){
this.xxx = XXX;
}
private String name;//例子
public void setName(String name){
this.name = name;
}
一个用来获取值:
public Type getXXX(){
return this.XXX;
}
//例如
public String getName(){
return this.name;
}
注意:
有访问器的时候一般手写当前类的无参构造
使用快捷键生成访问器方法:
ALT+S ----->generate Getter and Setter methods---->select all------>generate
※使用快捷键生成的访问器方法中,如果属性是布尔类型,无法生成getter方法,生成的是isXXX不是getXXX
空指针异常:(无法解决)
使用null调用方法或者使用null.属性的方式访问属性
避免方案:使用if判断当前是否是null,如果是就什么都不做.否则调用方法
package com.tencent.www;
import com.baidu.www.Course;
public class CourseTest04 {
public static void main(String[] args) {
Course[] courses = new Course[5];
Course c1 = new Course();
c1.setNumber(1);
c1.setName("语文");
c1.setScore(76.95);
c1.setTeacherName("孔子");
Course c2 = new Course();
c2.setNumber(2);
c2.setName("数学");
c2.setScore(99.05);
c2.setTeacherName("米开朗琪罗");
courses[0] = c1;
courses[1] = c2;
showInfoSuper(courses);
}
static void showInfoSuper(Course[] courses) {
for (Course course : courses) {
// 使用if判断
if (course == null) {
System.out.print("为了避免空指针的判断 ");
} else {
System.out.print(course.getName() + " ");
}
}
}
}