JAVA入门到精通

 封装、继承、多态、抽象四大特征

 多态:一个对象的多种状态,是从继承来的;

软件的可读性和可维护性是密切相关的;

 

 多个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不能在类定义的外部使用,只能在类定义的方法中使用

/* this的必要性 */ public class Demo112{ public static void main(String []args){ Dog dog1=new Dog(2,"大黄"); Person p1=new Person(dog1,23,"郭德纲"); Person p2=new Person(dog1,24,"刘谦"); p1.showInfo(); p1.dog.showInfo(); } } //定义一个人类 class Person{ //成员变量 int age; String name; Dog dog;//引用类型 public Person(Dog dog,int age,String name){ //可读性不好 //age=age; //name=name; this.age=age; //this.age指this代词指定是成员变量age this.name=name; //this.name指this代词指定是成员变量name this.dog=dog; } //显示人名字 public void showInfo(){ System.out.println("人名是:"+this.name); } } class Dog{ int age; String name; public Dog(int age,String name){ this.age=age; this.name=name; } //显示狗名 public void showInfo(){ System.out.println("狗名叫"+this.name); } }

this.age=age; this.name=name;

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

}

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

类变量--提出问题?

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

public class Demo113{ public static void main(String []args){ /* int total=0; Child ch1=new Child(3,"妞妞"); ch1.joinGame(); total++; Child ch2=new Child(4,"小小"); ch2.joinGame(); total++; */ Child ch1=new Child(3,"妞妞"); ch1.joinGame(); Child ch2=new Child(4,"小小"); ch2.joinGame(); Child ch3=new Child(5,"大大"); ch3.joinGame(); System.out.println("共有="+Child.total); } } //定义小孩类 class Child{ int age; String name; //static公共函数,total是静态变量,因此它可以被任何一个对象访问 static int total=0; public Child(int age,String name){ this.age=age; this.name=name; } public void joinGame(){ total++; System.out.println("有一个小孩加入了"); } }

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静态变量的内存;

来自为知笔记(Wiz)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Android So动态加载 优雅实现与原理分析

背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我

Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!

!(https://oscimg.oschina.net/oscnet/3e08a942dd884e9ab82b63a1f3c4aada.jpg"未命名文件.jpg")Java技术栈不可错过的Java 技术公众号!(https://oscimg.oschina.net/oscnet/00fcff52518e

JAVA入门到精通 - HelloWorld