版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Java中访问修饰符有四种分别是public、private、protect、default
区别它们的访问范围不同:
同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 | |
---|---|---|---|---|
Private | √ | |||
Default | √ | √ | ||
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |
其中我们最为常用的是范围最大的public和范围最小的private,在接下来类的封装中我们将会用到这两个修饰符;
类的封装定义:
就是将类的属性私有化,如果外界要访问私有属性,要通过public设置的获取属性值getXxx的方法和设置属性值setXxx的方法;
public class Student {
String name;
int age;
public void introduce() {
//方法中打印属性name和age的值
System.out.println("大家好,我叫"+name+",我今年"+age+"岁!");
}
}
public class Example01 {
public static void main(String[] args) {
Student stu=new Student(); //创建学生对象
stu.name="李华"; //为对象的name属性赋值
stu.age=-30; //为对象的age属性赋值
stu.introduce(); //调用对象的方法
}
}
年龄被赋值为一个负数-30
,这不符合我们现实生活中的逻辑。为解决年龄不能为负数这个问题,设计一个类并对成员变量的访问做一些限定,不予许外界的随意访问,这就是类的封装
。
public class Student {
private String name; //将name私有化
private int age; //将age私有化
//下面是公有的getXxx和setXxx法
public String getName() {
return name;
}
public void setName(String stuName) {
name=stuName;
}
public int getAge() {
return age;
}
public void setAge(int stuAge) {
//下面是对传入参数进行检查
if(stuAge<=0) {
System.out.println("对不起,你输入的年龄不合法,错误...");
}
else
age=stuAge;
}
public void introduce() {
System.out.println("大家好,我叫"+name+",我今年"+age+"岁!");
}
}
public class Example01 {
public static void main(String[] args) {
Student stu=new Student();
stu.setAge(-30);
stu.setName("李华");
stu.introduce();
}
}
在main方法中创建student对象,并调用setAge()方法传入一个负数-30,在setAge()方法中会对参数stuAge的值进行检查,小于0是输出“对不起,你输入的年龄不合法,错误…”,age属性没有赋值,初始值为0“大家好,我叫李华,我今年0岁!”;