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. cocos2d-x AssetsManager libcurl使用心得

    libcurl使用心得 最新正在写cocosclient更新的逻辑.研究了一下cocos2d-x自带的Libcurl,下面是自己在使用过程中的心得和遇到的未解问题.希望大家一起讨论一下,欢迎大家指导. ...

  2. Objective-C/C++混编编译器设置

    本文转载至 http://blog.csdn.net/yu0089/article/details/8220275 当使用Xcode编写C++代码时,难以避免要使用xcode/C++混合编译. 如果你 ...

  3. python 基础 6.1 异常处理方法

      一. Excepthion 异常类    Excepthion 是所有的异常基础类(),对于python 的标准异常,我们列出如下,以做参考:   异常名称                     ...

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

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

  5. IntelliJ idea webstrom Visual Studio Code vscode 设置cmder为默认终端 Terminal

    1.系统环境win10 2.确保环境变量中存在CMDER_ROOT,没有的话新增一个.地址为*:\***\cmder . idea.webstrom:设置中搜索terminal,shell path  ...

  6. Dubbo服务集群,常见容错机制:failover ,failsafe,failfase ,failback,forking

    http://blog.csdn.net/hongweigg/article/details/52925920 http://m.blog.csdn.net/article/details?id=51 ...

  7. eclipse中 svn出现 E220000 解决办法

    这种情况,先试试修改svnserve.conf 中的 anon-access = none 然后重启eclipse   如果还是不行,还有可能是因为你修改了svn的配置链接后 跟他人的svn连接方式有 ...

  8. 洛谷3243 [HNOI2015]菜肴制作

    题目戳这里 Solution 错误的想法:正向建图,然后从入度为0的点选出最小u的开始输出,然后找出u连接的点v,并把v的度数减一,再次把入度为0的点加入小根堆,这样显然有错,因为只能局部保证最小,后 ...

  9. 如何利用Windows System Image Manager制作一个answer file

    打开Windows System Image Manager 从菜单中创建一个新的Answer File 在窗体左下部的Windows Image处右键,选择菜单Select Windows Imag ...

  10. 我的Java开发学习之旅------>解惑Java进行三目运算时的自动类型转换

    今天看到两个面试题,居然都做错了.通过这两个面试题,也加深对三目运算是的自动类型转换的理解. 题目1.以下代码输出结果是(). public class Test { public static vo ...