Java——封装(面向对象)
一、封装
思想:隐藏实现细节,仅对外暴露公共的访问方式
二、private关键字
(一)介绍
1.是一个权限修饰符,可以修饰成员(成员变量和成员方法)
2.被private修饰的成员只能在本类中才能访问
(二)针对private修饰的成员变量,如果需要被其他类使用,操作如下
1.提供“get变量名()” 方法,用于获取成员变量的值,方法用public修饰
2.提供“set变量名(变量类型 变量名)”方法,用于设置成员变量的值,方法用public修饰
(三)举例
//定义一个类
public class TestPhone {String name;
// 将age变量变为私有属性private int age;
// 使用set变量名()来对私有属性修改public void setAge(int a) {if (a >=0 && a<=120) {age=a;}else {System.out.println("您的年龄不符合。");}}
// 使用get变量名()来对私有属性获得public int getAge() {return age;}
// 写一个方法public void sprint() {System.out.println(name+"的年龄是"+age);}
}
public class Text1 {public static void main(String[] args) {TestPhone t = new TestPhone();t.name="张三";t.setAge(110);System.out.println(t.getAge());t.sprint();}
}
//结果
//110
//张三的年龄是110
三、this关键字
(一)介绍
1.this关键字代表所在类的对象引用(引用-地址)
2.由于java遵循“就近原则”,所以才使用this关键字来确定成员变量
public class TestPhone {
// 将age变量变为私有属性private int age;
// 使用sert方法更改age变量的值
// 此时因为就近原则,
//所以在set方法中等于号左边和右边的“age”均代表局部变量age
//而并非是类中的成员变量age(所以成员变量age的值为初始值)!public void setAge(int age) {age=age; }
// 使用get方法获得age变量的值public int getAge() {return age;}
}
public class Text1 {public static void main(String[] args) {TestPhone t = new TestPhone();t.setAge(10);System.out.println(t.getAge());}
}
//结果
//0(初始值)
3.作用:可以调用本类的成员(变量,方法),解决局部变量和成员变量的重名问题
4.如何区别是否调用的是成员变量,就看有没有同名的局部变量,如果有——并且没在调用时添加“this”关键字,则调用的是局部变量;没有——则调用的是成员变量。
(二)举例
public class TestPhone {
// 将name和age成员变量变为私有属性private String name;private int age;
// 使用this关键字,将其中一个age变量确定为成员变量,更改成员变量的值public void setAge(int age) {if (age >=0 && age<=120) {this.age=age;}else {System.out.println("您的年龄不符合。");}}public void setName(String name) {this.name = name;}
// 使用get()方法获得成员变量的值public int getAge() {return age;}public String getName() {return name;}public void sprint() {System.out.println(name+"的年龄是"+age);}
}
public class Text1 {public static void main(String[] args) {TestPhone t = new TestPhone();t.setName("张三");t.setAge(10);System.out.println(t.getName());System.out.println(t.getAge());t.sprint();}
}
//结果
//张三
//10
//张三的年龄是10