本文共 2633 字,大约阅读时间需要 8 分钟。
1.1 封装与私有关键字
1.1.1 private关键字A:private关键字:a:是一个权限修饰符。b:可以修饰成员(成员变量和成员方法)c:被private修饰的成员只在本类中才能访问。1.1.1.1 案例代码八:
package com.itheima_05;/* * 学生类 * * 通过对象直接访问成员变量,会存在数据安全问题 * 这个时候,我们就想能不能不让外界的对象直接访问成员变量呢? * 能。 * 如何实现呢? * private关键字 * * private: * 是一个修饰符 * 可以修饰成员变量,也可以修饰成员方法 * 被private修饰的成员只能在本类中被访问 * * 针对private修饰的成员变量,我们会相应的提供getXxx()和setXxx()用于获取和设置成员变量的值,方法用public修饰 */public class Student {String name;//int age;private int age;public void setAge(int a) {if(a<0 || a>200) {System.out.println("你给的年龄有误");}else {age = a;}}public int getAge() {return age;}public void show() {System.out.println("姓名是:"+name+",年龄是:"+age);}}
package com.itheima_05;[/align]/* * 学生类的测试类 */public class StudentDemo {public static void main(String[] args) {//创建学生对象Student s = new Student();s.show();s.name = "林青霞";//s.age = 28;//s.age = -28;//s.setAge(-28);s.setAge(28);s.show();}}
1.1.2 private最常见应用
A:把成员变量用private修饰B:提供对应的getXxx()/setXxx()方法1.1.2.1 案例代码九:package com.itheima_06;/* * 学生类 */public class Student {private String name;private int age;public void setName(String n) {name = n;}public String getName() {return name;}public void setAge(int a) {age = a;}public int getAge() {return age;}}package com.itheima_06;/* * 学生类的测试类 */public class StudentDemo {public static void main(String[] args) {//创建对象Student s = new Student();System.out.println(s.getName()+"---"+s.getAge());s.setName("林青霞");s.setAge(28);System.out.println(s.getName()+"---"+s.getAge());}}
1.1.3 封装的概述和好处:
A:封装概述是面向对象三大特征之一是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。B:封装原则:将不需要对外提供的内容都隐藏起来。把属性隐藏,提供公共方法对其访问。成员变量private,提供对应的getXxx()/setXxx()方法C:好处:通过方法来控制成员变量的操作,提高了代码的安全性把代码用方法进行封装,提高了代码的复用性1.2 this关键字
1.2.1 this关键字由来和使用:A:this:代表所在类的对象引用方法被哪个对象调用,this就代表那个对象B:什么时候使用this呢局部变量和成员变量重名1.2.1.1 案例代码十:
package com.itheima_07;/* * 学生类 * * 起名字我们要求做到见名知意。 * 而我们现在的代码中的n和a就没有做到见名知意,所以我要改进。 * * 如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则。 * * 我们有没有办法把局部变量的name赋值给成员变量的name呢? * 有。 * * 什么办法呢? * 用this关键字就可以解决这个问题 * * this:代表所在类的对象引用 * 方法被哪个对象调用,this就代表那个对象 * * 使用场景: * 局部变量隐藏成员变量 */public class Student {private String name;private int age;public void setName(String name) { //"林青霞"//name = name;this.name = name;}public String getName() {return name;}public void setAge(int age) {//age = age;this.age = age;}public int getAge() {return age;}}
package com.itheima_07;/* * 学生类的测试类 */public class StudentDemo {public static void main(String[] args) {//创建对象Student s = new Student();System.out.println(s.getName()+"---"+s.getAge());s.setName("林青霞");s.setAge(28);System.out.println(s.getName()+"---"+s.getAge());}}
转载于:https://blog.51cto.com/13517854/2086764