zoukankan      html  css  js  c++  java
  • 面向对象-this关键字的概述和应用

     1 /*
     2     我们曾经说过:定义名字要做到见名知意。
     3     
     4     this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。
     5     
     6         注意:谁调用这个方法,在该方法内部的this就代表谁。
     7         
     8     this的场景:
     9         解决局部变量隐藏成员变量
    10 */
    11 //定义学生类
    12 class Student {
    13     //姓名
    14     private String name;
    15     //年龄
    16     private int age;
    17     
    18     //姓名获取值
    19     public String getName() {
    20         return name;
    21     }
    22     
    23     //姓名设置值
    24     public void setName(String name) { //String name = "林青霞";
    25         //name = name; //zhou:想把林青霞赋值给外面的name,但是变量的使用规则是就近的原则,所以林青霞还是去找最近的参数String name,
    26                        //把自己赋给了自己,和外面的private String name没有关系,这叫局部变量隐藏成员变量
    27                        //如果可以的话通过Student.name = name就可以,要用静态修饰(private static String name)
    28         
    29         //刘意:变量的使用规则:就近原则
    30         //这里是类名,目前还没有说过类似的用法,所以这个是有问题的
    31         //这里的调用只能通过对象名
    32         //这个对象如果存在,它应该代表的是Student的一个对象。
    33         //那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
    34         //Student.name = name;
    35         
    36         this.name = name;
    37     }
    38     
    39     //年龄获取值
    40     public int getAge() {
    41         return age;
    42     }
    43     
    44     //年龄赋值
    45     public void setAge(int age) {
    46         this.age = age;
    47     }
    48 }
    49 
    50 //测试类
    51 class StudentTest {
    52     public static void main(String[] args) {
    53         //创建学生对象
    54         Student s = new Student();
    55         
    56         //给成员变量赋值
    57         s.setName("林青霞");
    58         s.setAge(27);
    59         //获取数据
    60         System.out.println(s.getName()+"---"+s.getAge());
    61     }
    62 }

    若把成员变量定义成静态(把main方法放在主类中方便在Eclipse使用Run As——>Java Application):

     1 package cn.itcast;
     2 
     3 public class Student {
     4     //姓名
     5     private static  String name;
     6     //年龄
     7     private int age;
     8 
     9     public static String getName() {
    10         return name;
    11     }
    12 
    13     public static void setName(String name) {
    14         Student.name = name;
    15     }
    16 
    17     public int getAge() {
    18         return age;
    19     }
    20 
    21     public void setAge(int age) {
    22         this.age = age;
    23     }
    24 
    25 
    26     public static void main(String[] args) {
    27         // 创建学生对象
    28         Student s = new Student();
    29 
    30         // 给成员变量赋值
    31         s.setName("林青霞");
    32         // 推荐用类名调用
    33         Student.setName("林青霞");
    34         s.setAge(27);
    35         // 获取数据
    36         System.out.println(s.getName() + "---" + s.getAge());
    37         System.out.println(Student.getName() + "---" + s.getAge());
    38     }
    39 
    40 }
    41 
    42 // 测试类
    43 class StudentTest {
    44     
    45 }

    测试也是OK的:

  • 相关阅读:
    吴裕雄 19-Mysql 连接的使用
    吴裕雄 18-MySQL GROUP BY 语句
    吴裕雄 17-MySQL 排序
    吴裕雄 16-MySQL UNION 操作符
    吴裕雄 15-MySQL LIKE 子句
    吴裕雄 14-MySQL DELETE 语句
    吴裕雄 13-MySQL UPDATE 查询
    【2017中国大学生程序设计竞赛
    【2017中国大学生程序设计竞赛
    【AtCoder Regular Contest 082 F】Sandglass
  • 原文地址:https://www.cnblogs.com/ZHOUVIP/p/7294550.html
Copyright © 2011-2022 走看看