封装
A:封装的概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
B:封装的好处
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性
C:封装原则
- 将不需要对外提供的内容都隐藏起来。
- 把属性隐藏,提供公共访问方式。
private 关键字
- private 关键字的特点
1.是一个权限修饰符
2.可以修饰成员变量和成员方法
3.被其修饰的成员只能在本类中被访问 - 案例演示 封装和private的应用
1.把成员变量用private修饰
2.提供对应的getXxx()/setXxx()方法
3.private仅仅是封装的一种体现形式,不能说封装就是私有
public class Demo1_Person {
public static void main(String[] args){
Person p1 = new Person();
p1.name = "张三";
p1.setAge(17);
System.out.println(p1.getAge());
p1.speak();
}
}
class Person{
String name;
private int age;
public void setAge(int age){
if(age>0 && age<200){
this.age = age;
}else{
System.out.println("请重新输入");
}
}
public int getAge(){
return age;
}
public void speak(){
System.out.println(name + "..." + age);
}
}
this关键字
- this 关键字的特点
代表当前对象的引用
- 案例演示
this的应用场景
用来区分成员变量和局部变量命名相同时
public class Demo1_This {
public static void main(String[] args){
Person_1 p1 = new Person_1();
p1.setName("xiaoming");
p1.setAge(23);
System.out.println(p1.getName() + "..." + p1.getAge());
}
}
class Person_1{
private String name;
private int age;
public void setAge(int age){
if(age>0 && age<200){
age = age;
}else{
System.out.println("请重新输入");
}
}
public int getAge(){
return age;
}
public void setName(String name){
name = name;
}
public String getName(){
return name;
}
}
代码运行结果
null...0
因为就近原则,当形参age与Person_1类的成员变量参数名相同时,优先选择离命令较近的形参age,也就是形参给自己赋值。
正确的输如如下:
public class Demo1_This {
public static void main(String[] args){
Person_1 p1 = new Person_1();
p1.setName("xiaoming");
p1.setAge(23);
System.out.println(p1.getName() + "..." + p1.getAge());
}
}
class Person_1{
private String name;
private int age;
public void setAge(int age){
if(age>0 && age<200){
this.age = age; //这里this代表当前对象的引用
}else{
System.out.println("请重新输入");
}
}
public int getAge(){
return age;
}
public void setName(String name){
this.name = name; //成员变量必须有对象来调用 p1的地址值==this的地址值
}
public String getName(){
return name;
}
}
输出结果如下:
xiaoming...23
网友评论