package com_package2;

 public class Person3 {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Person3()
{
System.out.println("hahahaa"); }
Person3(String n,int a)
{
name = n;
age = a;

}
Person3(String n)
{
name = n;

}
Person3(int a)
{ age = a;
}
public void speak()
{
System.out.println("name = "+name+" "+"age="+age); }
}
 package com_package2;

 public class Person3Demo {
public static void main(String[]args)
{
Person3 p = new Person3();
p.speak();
Person3 p1 = new Person3("hejinjin",23);
p1.speak();
Person3 p2 = new Person3("hejinjin");
p2.speak();
Person3 p3 = new Person3(23);
p3.speak();
show(); }
public static void show()
{
System.out.println("haha"); } }

hahahaa
name = null age=0
name = hejinjin age=23
name = hejinjin age=0
name = null age=23
haha

改成this关键字后:

package com_package2;

public class Person3 {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Person3()
{
System.out.println("hahahaa"); }
Person3(String name,int age)
{
this.name = name;
this.age = age; }
Person3(String name)
{
this.name = name; }
Person3(int age)
{ this.age = age;
}
public void speak()
{
System.out.println("name = "+this.name+" "+"age="+this.age); }
}

注意this关键字的格式:this.类中的属性 = 参数中含有的变量

当成员变量和局部变量同名的时候,为了区分,可以使用一个关键字来完成。关键字:this

this:代表的是一个对象,哪个对象调用this所在的函数,this就代表哪个对象,this就是当前对象的一个引用 

this什么用:当定义功能的时候,功能内部使用到了调用该功能的对象,这是就用this来表示

this的表现形式一:当局部变量和成员变量同名的时候,可以用this来区分

this的表现形式二:构造函数之间的调用可以使用this关键字,后面跟上小括号,指定其具体的实参即可明确要调用的构造函数

用this关键字进行一般函数调用一般函数:

package com_package2;

public class Person3 {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Person3()
{
System.out.println("hahahaa"); }
Person3(String name,int age)
{ this(name);
this.name = name;
this.age = age; }
Person3(String n)
{
this.name = name; }
Person3(int age)
{ this.age = age;
}
public void speak()
{
System.out.println("name = "+this.name+" "+"age="+this.age); }
public void show()
{
this
.speak(); }
}
package com_package2;

public class Person3Demo {
public static void main(String[]args)
{
Person3 p = new Person3();
p.speak();
Person3 p1 = new Person3("hejinjin",23);
p1.speak();
Person3 p2 = new Person3("hejinjin");
p2.speak();
Person3 p3 = new Person3(23);
p3.speak();
p1.show(); } }

利用this关键字进行构造函数和构造函数之间的调用:

package com_package2;

public class Person3 {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Person3()
{
System.out.println("hahahaa"); }
Person3(String name,int age)
{ // this();
this.name = name;
this.age = age; }
Person3(String name)
{
//this();
this.name = name; }
Person3(int age)
{
this("hejinjin",342);
this.age = age;
}
public void speak()
{
System.out.println("name = "+this.name+" "+"age="+this.age); }
public void show()
{
this.speak(); }
}
package com_package2;

public class Person3Demo {
public static void main(String[]args)
{
Person3 p = new Person3();
p.speak();
Person3 p1 = new Person3("hejinjin",23);
p1.speak();
Person3 p2 = new Person3("hejinjin");
p2.speak();
Person3 p3 = new Person3(238);
p3.speak();
p1.show(); } }

hahahaa
name = null age=0
name = hejinjin age=23
name = hejinjin age=0
name = hejinjin age=238
name = hejinjin age=23

 

特殊情况:注意:调用本类中的构造函数的this语句必须定义在构造函数的第一行,因为初始化动作要先完成

面向对象(this关键字)的更多相关文章

  1. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...

  2. JAVA面向对象-----super关键字

    JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...

  3. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  4. 面向对象this关键字和概述和应用

    面向对象this关键字和概述和应用 package thisdemo; /** * 面向对象this关键字和概述和应用 * */ //定义老师类 class Teacher { private Str ...

  5. 10 面向对象(package关键字的概述及作用)

    10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B: ...

  6. 面向对象-static关键字实战案例

    面向对象-static关键字实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.static关键字概述 1>.static的功能 static关键字用于修饰成员变量和 ...

  7. Java基础语法(11)-面向对象之关键字

    title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...

  8. PHP中面向对象的关键字

    php面向对象中常用的关键字有final.static.const (1)final: 1,final不能修饰成员属性 2,final只能修饰类和方法 作用: 使用final修饰的类不能被子类继承 使 ...

  9. javascript 面向对象 new 关键字 原型链 构造函数

    JavaScript面向对象JavaScript 语言使用构造函数(constructor)作为对象的模板.所谓"构造函数",就是专门用来生成实例对象的函数.它就是对象的模板,描述 ...

  10. Java面向对象重要关键字

    面向对象过程接触的重要关键字:extends   super   this   final   static  extends 关键字用作继承功能,可以申明一个类是从另外一个类继承而来的,一般形式如下 ...

随机推荐

  1. 研究下JavaScript中的Rest參数和參数默认值

    研究下JavaScript中的Rest參数和參数默认值 本文将讨论使 JavaScript 函数更有表现力的两个特性:Rest 參数和參数默认值. Rest 參数 通常,我们须要创建一个可变參数的函数 ...

  2. 转载 OSX开发推荐书籍列表

    初级 (开发语言, 开发工具)Objective-C Beginner's GuideObjective-C for Absolute Beginners 2nd EditionLearning Co ...

  3. node / npm/ yarn 的安装以及环境变量

    # node.js 10.15.3 https://npm.taobao.org/mirrors/node/v10.15.3/node-v10.15.3-x64.msi 1.安装后自动添加了环境变量: ...

  4. Selenium 我的自动化测试历程 (Selenium+TestNG+Java+ReportNG+Jenkins)

    测试环境:Java+Selenium+TestNG,Jenkins持续集成. 测试代码 代码结构 采用页面对象模型(Page Object),减少UI修改后,对代码的影响.   Java编写,采用Te ...

  5. springcloud与docker微服务架构实战--笔记

    看了<微服务那些事>之后,Spring boot和Spring Cloud的关系理清楚了,Spring cloud各个模块的作用也了解了. 但是,Spring cloud 与Docker的 ...

  6. mysql系列之6.mysql主从同步

    普通文件的数据同步 nfs: 网络文件共享 samba: 共享数据 定时任务或守护进程结合 rsync.scp inotify(sersync)+rsync 触发式实时数据同步 ftp数据同步 ssh ...

  7. vue如何做分页?

    原创作品转载请注明出处 先来看一下效果图:    功能描述: 1. 点击页面序号跳转到相应页面: 2. 点击单左/单右,向后/向前跳转一个页面: 3. 点击双左/双右,直接跳转到最后一页/第一页: 3 ...

  8. SAP 第四代增强-BTE

    第四代BTE实例详解:http://blog.csdn.net/wbin9752/article/details/7954922 第三代增强(BADI实例详解) :http://blog.csdn.n ...

  9. HTML——列表的相关知识

    核心知识点: 1.无序列表: ul>li 2.有序列表:ol>li 3.标题列表:dl(标签)>dt(标题)>dd(选项) 4.表格:table>thead(>tr ...

  10. mac下编译FFmpeg-Android

    参考: [史上最傻瓜的]mac下编译FFmpeg-Android http://blog.csdn.net/ashqal/article/details/9381037