package lsg.ap.april4th2;
 /*
     知识点:1.Getter and Setter 的应用
        2.局部变量与成员变量(也可叫做全局变量)
        3.Static关键字的用法
          a.成员变量被static修饰后的所有类的共享属性
          b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化
        4.This关键字的用法
     this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。

     注意:谁调用这个方法,在该方法内部的this就代表谁。

     this的场景:
         解决局部变量隐藏成员变量
 */
 //定义学生类
 class Person
 {
     //姓名
     private String name="刘德华";
     //年龄
     private int age=45;
     //所有对象共享的属性用static修饰,可以直接被类名直接调用
     static String country = "中国";

     //姓名获取值
     public String getName()
     {
         return name;
     }

     //姓名设置值
     public void setName(String name)
     { //name = "林青霞";
         //name = name; //变量的使用规则:就近原则
         //这里是类名,目前还没有说过类似的用法,所以这个是有问题的
         //这里的调用只能通过对象名
         //这个对象如果存在,它应该代表的是Student的一个对象。
         //那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
         //Student.name = name;
         this.name = name;
     }

     //年龄获取值
     public int getAge()
     {
         return age;
     }

     //年龄赋值
     public void setAge(int age)
     {
         this.age = age;
     }
 }

 //测试类

 public class PersonClass
 {

     public void show()//定义非静态方法,必须经过实例化后才能调用

     {
         System.out.println("哈哈");
     }
     public static void show2()//但是当以静态方法后,可以直接用 类名.函数名
                              //调用,在本类内,类名可以忽略,这就是常见的public static...的由来
     {
         System.out.println("哈哈你妹");
     }
     public static void main(String[] args)
     {
         //创建人对象
         Person s1= new Person();
         Person s2= new Person();
         PersonClass s3=new PersonClass();
         s3.show();//不能直接写show(),因为是非静态方法,必须实例化后通过实例调用
         show2();
         //给成员变量赋值
         s1.setName("林青霞");
         s1.setAge(27);
         s1.country="美国";//静态变量的值是共享的,所以以最后一次修改的为准,即全变成了日本
         s2.country="日本";//静态属性最好用类名直接调用,要不会警告的哦
         //Static 与Final是不同的哦,Static类似C语言的Extern,Final类似Define
         //Static定义的变量的值仍然是可以修改的,但是Final指定在定义的时候赋值一次
         //获取数据
         System.out.println(s1.getName()+"---"+s1.getAge());//直接用类名.调用Name和
                                                             //        age是绝对不可以的
         System.out.println(s2.getName()+"---"+s2.getAge());
         System.out.println(s1.country);//静态属性最好不要用类的实例调用,会警告的
         System.out.println(s2.country);
         System.out.println(Person.country);//Person.后面只提示country,
                                           //不会提示name和age哦
     }

 }

最新文章

  1. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
  2. tp5 model 中的查询范围(scope)
  3. 关于ActionContext.getContext()的用法心得
  4. [纯干货] MySQL索引背后的数据结构及算法原理
  5. ASP.NET MVC数组模型绑定
  6. Apache Spark源码走读之16 -- spark repl实现详解
  7. 【HDOJ】1619 Unidirectional TSP
  8. 《循序渐进Oracle》部分笔记
  9. jvm对大对象分配内存的特殊处理(转)
  10. Gentoo/Funtoo USE标记介绍
  11. Logistic Regression求解classification问题
  12. 杭电ACM2019--数列有序!
  13. js循环语句
  14. yk-随记
  15. python8--文件操作 with。。。open语法
  16. c&c++中的宏
  17. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第三集之磁盘分区】
  18. 第二个spring冲刺第10天(及第二阶段总结)
  19. UML建模学习1:UML统一建模语言简单介绍
  20. JS数组中级+高级技巧

热门文章

  1. Android TextView 显示不全的自动补齐方式
  2. 【转】CodeIgniter配置之database
  3. php源码安装
  4. Qt中sleep()的实现(耳目一新的两种方法)
  5. 【Android测试】【随笔】模拟双指点击
  6. 【Java 基础篇】【第四课】初识类
  7. IOS 手势事件的冲突
  8. [LeetCode]题解(python):079 Word Search
  9. Spark Programming--Transformations
  10. Internal Server Error500