搜狐快站做淘宝客网站,游戏网站建设多少,专门做特卖的网站,拍摄公司宣传片制作private 是一个权限修饰符可以修饰成员变量和成员方法被其修饰的成员只能在本类中被访问#xff0c;可以保护成员不被其他类使用 提供 “get 变量名#xff08;#xff09;”方法#xff0c;用于获得成员变量的值#xff0c;方法用 public 修饰提供 “set 变量名#xff…private 是一个权限修饰符可以修饰成员变量和成员方法被其修饰的成员只能在本类中被访问可以保护成员不被其他类使用 提供 “get 变量名”方法用于获得成员变量的值方法用 public 修饰提供 “set 变量名参数”方法用于设置成员变量的值方法用于public 修饰 this this 修饰的变量用于指代成员变量 方法的形参如果与成员变量同名不带 this 修饰的变量指的是形参方法的形参没有与成员变量同名不带 this 修饰的 变量指的是成员变量 什么时候用 this解决局部变量隐藏成员变量 this : 代表所在的类对象的引用 方法被那个对象调用this 就代表那个对象 Student.java如下
package com.面向对象;public class Student {String name;private int age;//age 不能被外部访问的只能在Student当前类中访问agepublic void work() {System.out.println(开始敲代码...);}/*** 定义的类一般是需要给成员属性生成get/set方法的* ∵目的保护类中的成员属性变量权限控制* ∴给成员属性前加 private(私有的)想要给private赋值就得使用get/set方法非private,也可以使用get/set* get---获取成员变量的值* set---给成员变量赋值*/// 下面是自动生成的get/set方法(右键Generate)public String getName() {return name; // return this.name// 由于该方法中 没有形参name,所以这里的name可以不加this,这里的name 指的就是成员变量的name}public void setName(String name) {this.name name;// namename 方法的形参name与成员变量参数name的名称 相同 不带this的话 第一个name指的就是形参毫无意义 String naem;namename// namen 方法的形参 n 与成员变量参数 name 不相同 不带this的话 name指的就是成员变量( this.namen)}public int getAge() {return age;}public void setAge(int age) {if (age 0 || age 120) {System.out.println(年龄不符...);return;}this.age age; //this.age(成员变量age)age(局部变量age)}public void work2() {
// public void work2(int i){// 在方法中传递的参数形参也属于该方法里面的局部变量Student s new Student(); // 单独的一个线程GC线程 在堆内存中 不可用的对象// new Student存放在堆内存中s存放在栈空间中直接引用到堆内存地址/*** 局部变量int i/age 在什么时候被销毁呢work2方法执行结束之后* GC 垃圾回收* Student s ------引用到堆内存 new Studnet对象的内存地址*/int i 20;int age 30;// 局部变量 变量名称 在同一个方法中 不允许 存在 多个相同的变量名称int z;
// System.out.println(z); //局部变量 使用前 必须 先赋值System.out.println(this.age); // 成员变量 有默认初始值this.age age; //在work2方法中 将局部变量age 赋值给 成员变量的age(在方法内调用成员变量使用this)}
}StudentDemo.java如下
package com.面向对象;public class StudentDemo {public static void main(String[] args) {Student mayiktStudent new Student(); // new Student()存放堆内存mayiktStudent存放在栈内存直接引用到堆内存地址System.out.println(mayiktStudent);mayiktStudent.setName(mayikt);
// mayiktStudent.age 21;mayiktStudent.setAge(21);System.out.println(mayiktStudent.getName() - mayiktStudent.getAge());mayiktStudent.work();
// Student xiaojunStudent new Student();Student xiaojunStudent mayiktStudent; //将mayiktStudent的堆内存地址复制给xiaojunStudentSystem.out.println(xiaojunStudent); // 可以看到这个内存地址与mayiktStudent的内存地址一样xiaojunStudent.setName(xiaojun);xiaojunStudent.setAge(24);System.out.println(mayiktStudent.getName() - mayiktStudent.getAge()); // 现在两个对象使用的是一个内存地址System.out.println(xiaojunStudent.getName() - xiaojunStudent.getAge()); //所以两个对象的属性值一样xiaojunStudent.work();}
}下一篇文章构造方法