• JAVA入门到精通-第8讲-this类变量


     封装、继承、多态、抽象四大特征
     多态:一个对象的多种状态,是从继承来的;
     软件的可读性和可维护性是密切相关的;
     
     多个age 会造成一定理解上的困难;
      所以,带一个this;
      这样比较好理解了,this是属于一个对象的;

     this----"我的"---代词;
     this 是属于一个具体的对象的,而不是属于一个类的;
     JAVA虚拟机给每个对象分配一个虚拟机,代表当前对象

     
     
     
     
    dog引用的名存放在P1里面,但是内存放在dog1
     

    this是不能在外面去使用的;
    只能 在类定义的 时候去使用;
     构造方法(构造函数)就是用来初始化成员变量的;
     
      类变量和类方法:
     
      如果有公共的空间;可以共同的操作;
      static int total = 0;
     如果加了static,编译器可以准确的理解到total
     是属于大家的,而不是属于某个小孩子的;

       ch1,ch2,ch3都可访问到 静态变量total;
     
      或者直接用类名也可以访问到静态变量total:


    java面向对象编程(2)--this

    一个问题?

    请大家看一段代码:(Demo112.java)

    *重点*this是属于一个对象,不属于类的。

    java虚拟机会给每个对象分配this,代表当前对象。坦白的讲,要明白this不是件容易的事

    注意事项:this不能在类定义的外部使用,只能在类定义的方法中使用

    x
    1
    /*
    2
        this的必要性
    3
    */
    4
    public class Demo112{
    5
        public static void main(String []args){
    6
            Dog dog1=new Dog(2,"大黄");
    7
            Person p1=new Person(dog1,23,"郭德纲");
    8
            Person p2=new Person(dog1,24,"刘谦");
    9
            p1.showInfo(); 
    10
            p1.dog.showInfo();
    11
        }
    12
    }
    13
    //定义一个人类
    14
    class Person{
    15
        //成员变量
    16
        int age;
    17
        String name;
    18
        Dog dog;//引用类型
    19
        public Person(Dog dog,int age,String name){
    20
            //可读性不好
    21
            //age=age;
    22
            //name=name;
    23
            this.age=age; //this.age指this代词指定是成员变量age
    24
            this.name=name; //this.name指this代词指定是成员变量name
    25
            this.dog=dog;
    26
        }
    27
        //显示人名字
    28
        public void showInfo(){
    29
            System.out.println("人名是:"+this.name);
    30
        }
    31
    }
    32
     
    33
    class Dog{
    34
        int age;
    35
        String name;
    36
        public Dog(int age,String name){
    37
            this.age=age;
    38
            this.name=name;
    39
        }
    40
        //显示狗名
    41
        public void showInfo(){
    42
            System.out.println("狗名叫"+this.name);
    43
        }
    44
    }

    -------------------------------------------------------------------------------

    类变量--提出问题?

    提出问题的主要目的就是让大家思考解决之道。


     
    1
    public class Demo113{
    2
        public static void main(String []args){
    3
        /*  int total=0;
    4
            Child ch1=new Child(3,"妞妞");
    5
            ch1.joinGame();
    6
            total++;
    7
            Child ch2=new Child(4,"小小");
    8
            ch2.joinGame();
    9
            total++;
    10
        */
    11
            Child ch1=new Child(3,"妞妞");
    12
            ch1.joinGame();
    13
            Child ch2=new Child(4,"小小");
    14
            ch2.joinGame();
    15
            Child ch3=new Child(5,"大大");
    16
            ch3.joinGame();
    17
            System.out.println("共有="+Child.total);
    18
        }
    19
    }
    20
    //定义小孩类
    21
    class Child{
    22
        int age;
    23
        String name;
    24
        //static公共函数,total是静态变量,因此它可以被任何一个对象访问
    25
        static int total=0;
    26
        public Child(int age,String name){
    27
            this.age=age;
    28
            this.name=name;
    29
        }
    30
        public void joinGame(){
    31
            total++;
    32
            System.out.println("有一个小孩加入了");
    33
        }
    34
    }
     ch1/ch2/ch3  的输出结果都是3; 共享static静态变量的内存;












  • 相关阅读:
    lazy懒载入(延迟载入)UITableView
    POJ 3277 City Horizon
    Effective C++ Item 26 尽可能延后变量定义式的出现时间
    2014 百度之星题解1001
    搭建和測试Android JAVA NDK
    Oracle数据库案例整理-Oracle系统执行时故障-内存过少导致分配共享内存失败
    “以房养老”保险方案为啥行不通?
    Mysql上的RAC:Percona XtraDB Cluster负载均衡集群安装部署手冊
    mysql 数据库查询最后两条数据
    00109_反射概述
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10044151.html
Copyright © 2020-2023  润新知