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. JQuery利用选择器定位动态id?

    假如我们需要去定位一个动态生成的div,我们需要为它指定一个动态的id 例如: 前台使用EL进行迭代LIST生成div,为其添加动态的id,生成之后变成下面样式 <div id="tz ...

  2. JVM完全指南

    JVM完全指南     一:虚拟机内存图解   JAVA程序运行与虚拟机之上,运行时需要内存空间.虚拟机执行JAVA程序的过程中会把它管理的内存划分为不同的数据区域方便管理.     虚拟机管理内存数 ...

  3. 线程池 API (转)

    文档原始地址    目录 线程池概述 线程池对象 回调环境对象 工作对象 等待对象 计时器对象 I/O 完成对象 使用清理组简化清理 回调实例 API    随着 Windows Vista® 的发布 ...

  4. python 基础 7.2 时间格式的相互转换

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/9 8:55 #@Auther :liuzhenchuan #@File   :时间格式的相互转换.p ...

  5. php部分:网页中报表的打印,并用CSS样式控制打印的部分;

    网页中报表的打印,是通过调用window对象中的print()方法实现打印功能的: 调用浏览器本身的打印功能实现打印 <a href="#" onclick="wi ...

  6. 九度OJ 1081:递推数列 (递归,二分法)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6194 解决:864 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第 ...

  7. Learning an Optimal Policy: Model-free Methods

    http://www.mit.edu/~9.54/fall14/slides/Reinforcement%20Learning%202-Model%20Free.pdf [基于所有.单个样本]

  8. 【题解】P2048 [NOI2010]超级钢琴

    [题解][P2048 NOI2010]超级钢琴 一道非常套路的题目.是堆的套路题. 考虑前缀和,我们要是确定了左端点,就只需要在右端区间查询最大的那个加进来就好了.\(sum_j-sum_{i-1}​ ...

  9. install_driver(mysql) failed

        安装好了mysql监控神器innotop,正得意,innotoop不可用,其错误提示为install_driver(mysql) failed: Can't load '/usr/lib64/ ...

  10. sap 图标查看

    showicon这个程序很不错,可以显示SAP里所有的ICON(图标). 用事务码SE38直接运行程序:showicon 即可. 显示列表之后,双击任何一个图标可以显示出每一个图标的详细信息.