类对象的属性赋值的先后顺序:
1、属性的默认初始化
2、属性的显示初始化
3、通过构造器给属性初始化
4、通过“对象.方法”的方式给属性初始化。

this 关键字
this是什么?
在java中,this关键字比较难以理解,它的作用和其词义很接近。
它在方法中使用,即表示这个方法所属对象的引用;
它在构造器内部使用,表示该构造器正在初始化的对象;

this表示当前对象,可以调用类的属性、方法和构造器。

什么时候需要this关键字呢?
当在方法中需要用到该方法的对象时,就用this

EG:

class person{
public void setAge(int age){age = age;
}
}
public class person{person p1 = new person();p1.setAge(2);System.out.println(p1.getAge());//0
}

类中的age无法识别,所以age没有被赋值,仍然是0。
person类中的setAge方法形参age,在方法体中认为age都是形参中的那个age,所以根本没有赋值。
在eclipse工具中可以双击一个age属性,亮起的都为age属性正常使用,且都是person的属性age
唯独setAge方法中的age没有亮起,因为此时setAge方法中的age,都是方法中的局部变量,和person类的age属性没有一毛钱关系。
所以,person类中的age仍然为0

PS:简单的理解就是如果形参和类属性的名称一样,this表示的意思一个自己本身类的对象,代表的是本类。
    例如 person类,就是person类在自己的类里面声明了一个对象。
    person p = new person;
    public void setAge(int age){
      p.age = age;
}
    只是现在提供了一个关键词this,可以代替这一步骤。

但是在类中不可以这样写,因为这样写,这个只是用于理解this的用法。
因为如果这样写的话,对象就被写死了,如果在其他类中调用的时候声明的对象不是p,或者声明的不一致,就没有办法取的同样的效果。
所以,需要使用this关键词。

class person{
public void setAge(int age){
      this.age = age;
}
}

public class person{
    person p1 = new person();
    p1.setAge(2);
    System.out.println(p1.getAge());//2
}
它在方法中使用,即表示这个方法所属对象的引用;

//    public person(String name ) {
//        this.name  =name ;
//    }
    
    public person(String name ) {
        p.name  =name ;
    }//也是一样的
它在构造器内部使用,表示该构造器正在初始化的对象;

public void eat() {
        System.out.println("人吃饭");
    }
    
    public void info() {
        this.eat();
        System.out.println(this.name);
    }
同样成立。调用本类中的方法
       p1.info();
 在方法中使用,即表示这个方法所属对象的引用,this等于p1; this代表的就是p1.

public void show(){
              System.out.println("我是一个人");
       }
           public void info() {
        this.eat();
        System.out.println(this.name);
//        show() 以前调用本类中的方法都是这样的写法。
                this.show(); //只是this隐藏了而已。

}
this:
1、可以用来修饰属性,方法,构造器
2、this可以理解为当前对象或  当前正在创建的对象 例如:this.show();this.name;
(当前正在创建的对象,这句是在构造器里面是这样理解的,因为构造器是造对象用的,构造器内还没有生成对象)

构造器中第二次使用this相同属性,可以写this(属性)
    public person(String name ) {
        this.name  =name ;
    }

public person(String name,int age) {
    // this.name = name ;
       this(name);(这是person类中为name的构造器)
       //使用的过程中是先调用person(name)这个构造器,然后在使用本构造器
       this.age =age;//构造器中不可以使用两个   this(属性)【指的是不可以使用两个this构造器】
    }
this(属性)可以用来显示调用当前类的重载的指定构造器:
 1、构造器内部必须在首行
 2、若一个类中有几个构造器,那么最多n-1个构造器中使用this(属性)

当形参与成员变量重名的时候,如果在方法内部需要使用成员变量,必须添加this来表明该变量是类成员
在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。
this可以作为一个类中,构造器相互调用的特殊格式。

面向对象的第三条主线:关键字相关推荐

  1. 尚硅谷第五天课0722班 java-面向对象学习的三条主线-面向对象的思想概述- 类的元素- java类及类的成员-类的成员之方 法

    面向对象学习的三条主线:* 1.类和类的组成(属性(或成员变量).方法.构造器:代码块(或初始化块).内部类)* 2.面向对象的特征:封装与隐藏.继承性.多态性.(抽象性)* 3.其它关键字的使用:t ...

  2. 深富策略:新的动力正在酝酿 重点布局三条主线

    回顾节前A股行情,沪指出现震荡调整态势,回踩和洗盘动作在节前做得比较彻底,市场风险得到集中释放.值得关注的是,在A股国庆假期休市期间,外盘波动较为剧烈.在全球能源短缺愈演愈烈的背景下,国际大宗商品延续 ...

  3. 雄安新区概念横空出世 三条主线掘金智慧城市

    近日,河北雄安新区的设立引发各界强烈关注,最先反应的无疑是资本市场.无论是港股,还是A股,与雄安有关的概念股均应声而涨.气势如虹.对于投资者而言,更关注的则是雄安新区将带来哪些行业的投资机会. 根据规 ...

  4. ▼▲Delphi面向对象编程的20条规则

    ▼▲Delphi面向对象编程的20条规则(转载) 楼主ZyxIp(绝望中...)2003-09-02 14:28:07 在 Delphi / VCL组件开发及应用 提问 作者简介       Marc ...

  5. 面向对象程序设计课程进度条

    面向对象程序设计课程进度条 周次 (阅读/编写)代码行数 发布微博量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 42/25 1/0 4/3 乘法表实验 第二周 150/100 ...

  6. javascript面向对象系列第三篇——实现继承的3种形式

    前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.开宗明义,继承是指在原有对象的基础上,略作修改,得到一个新的对象.javascript主要包括类式继承.原型继承和拷贝继承这三种 ...

  7. php面向对象有哪三种访问控制模式,第三节 访问控制的实现

    第三节 访问控制的实现 面向对象的三大特性(封装.继承.多态),其中封装是一个非常重要的特性.封装隐藏了对象内部的细节和实现,使对象能够集中而完整的描述并对应一个具体的事物,只提供对外的访问接口,这样 ...

  8. 前端框架千千万,抓住两条主线成一半

    作者:大漠穷秋 百花齐放的前端框架 2007 年的时候我刚毕业,当时最火的前端框架是 jQuery 和 Ext JS,那时候大家纠结的问题是:我到底是用 jQuery 呢还是用 Ext JS 呢? 后 ...

  9. 程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    程序员简历项目经历怎么写 ?三条原则不可忽视 [项目案例分享] 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目. 不过还是有很多学生朋友来问我"没有项目怎么办&qu ...

最新文章

  1. 面试季,Java中的static关键字解析
  2. 【Java 并发编程】线程池机制 ( 线程池状态分析 | 线程池状态转换 | RUNNING | SHUTDOWN | STOP | TIDYING | TERMINATED )
  3. Uva 11732 strcmp()函数
  4. elasticsearch+kibana
  5. 自动检测CSRF漏洞的工具
  6. 快速pow和sqrt的小技巧 hdu4282
  7. object类型转换为Array类型
  8. Mac下升级python2.7到python3.6,删除2.7,或者不删除2.7都行
  9. 什么平台给了社区站长机会
  10. 查看生产DB2数据库空间及使用情况
  11. 【操作系统】Unix文件类型有哪些
  12. 美团技术十年:让我们感动的那些人那些事
  13. python:库文件整理
  14. Java之父:詹姆斯·高斯林 (James Gosling)
  15. 练习时长一年半,算法蒟蒻的成长记录
  16. Elasticsearch深入理解(九)——三种分页方式选取
  17. 一、肿瘤全基因组分析概况(Pan-cancer analysis of whole genomes,PCAWG)
  18. IM的扫码登录功能如何实现?
  19. Android studio制作计算器源代码
  20. 揭秘ARM FPU 加速浮点计算

热门文章

  1. 计算机毕业设计 SpringBoot+Vue拍卖竞拍系统 拍卖管理系统 网上拍卖系统 网络拍卖系统
  2. Softing 2021届诊断大会
  3. 海思HI35xx平台软件开发快速入门之视频分辨率
  4. 在 2020 秋招中没有取得理想的 offer,可以提前为2021春招做哪些准备?
  5. 如何两周学完操作系统?我是这样做的
  6. idea里代码报黄色:XML tag has empty body less... (Ctrl+F1) Reports empty tag body. The validation works in
  7. 2017网易实习前端面试题讨论
  8. 高潜人才的识别与培养,找到人才高线很关键!
  9. java 一年有多少个星期、一年有多少天
  10. 关于Android Studio Arctic Fox 无法在 build.gradle(Project) 中添加第三方Maven仓库的解决方案