`
qiufengxiaose
  • 浏览: 7035 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

详解Java中的this关键字

阅读更多
使用this调用本类中的属性

现在观察以下代码,看会有那些问题:

public void setName(String name){

name = name ;

} 

这里面的两个name都是setName方法中的name参数。

此时,特别希望可以通过一个指定的标识明确的表示要把传入的name参数的值给类中的属性,所以此时就需要使用this关键字,使用this.name就表示类中的属性。

class Person{

private String name ;

private int age ;

public Person(String name,int age){

this.setName(name) ;

this.setAge(age) ;

}

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public void print(){

System.out.println("姓名:"+this.name+",年龄:"+this.age) ;

}

};

public class Demo35{

public static void main(String args[]){

Person p1 = new Person("张三",30) ;

p1.print() ;

}

}; 

使用this还可以从一个构造方法中调用其他构造方法。

例如:有以下一个要求,一个类中存在了三个构造方法,但是要求, 不管怎么调用,最终都要求可以在对象实例化的时候打印一个“新的对象产生了”的提示。

class Person{

private String name ;

private int age ;

public Person(){

System.out.println("新的对象产生了。。。") ;

}

public Person(String name){

System.out.println("新的对象产生了。。。") ;

this.setName(name) ;

}

public Person(String name,int age){

System.out.println("新的对象产生了。。。") ;

this.setName(name) ;

this.setAge(age) ;

}

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public void print(){

System.out.println("姓名:"+this.name+",年龄:"+this.age) ;

}

}; 

以上代码虽然可以实现功能,但是同样的代码出现了三次,而且后面的两次出现纯属多余吧。用this()的形式可以调用类中的无参构造方法。

class Person{

private String name ;

private int age ;

public Person(){

System.out.println("新的对象产生了。。。") ;

}

public Person(String name){

// 最终都是调用无参构造方法

this() ;

this.setName(name) ;

}

public Person(String name,int age){

this(name) ;

this.setAge(age) ;

}

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public void print(){

System.out.println("姓名:"+this.name+",年龄:"+this.age) ;

}

};

public class Demo36{

public static void main(String args[]){

Person p1 = new Person("张三",30) ;

p1.print() ;

}

}; 

注意点1:

如果使用了this调用其他构造方法,则此语句,必须写在构造方法的首行。

public void fun(){

// 发现在调用fun方法的时候,必须先设置name的值

this("zhangsan") ;

} 

public Person(String name,int age){

this.setAge(age) ;

this(name) ; //--> 必须放在首行

} 

注意点2:

使用this可以调用本类中的其他构造方法,但是至少留一个构造方法,作为程序的出口。

public Person(){

this("a",10) ;

System.out.println("新的对象产生了。。。") ;

}

public Person(String name){

// 最终都是调用无参构造方法

this() ;

this.setName(name) ;

}

public Person(String name,int age){

this(name) ; //--> 必须放在首行

this.setAge(age) ;

} 

this最重要的特性 —— 表示当前对象

当前对象在程序中用以下形式体现:

· 当前操作此方法的对象,就称为当前对象。

class Demo{

public void print(){

System.out.println(this) ;

}

};

public class Demo38{

public static void main(String args[]){

Demo d1 = new Demo() ;

System.out.println(d1) ;

d1.print() ;

System.out.println("---------------------") ;

Demo d2 = new Demo() ;

System.out.println(d2) ;

d2.print() ;

}

}; 

回顾:

之前讲解的两个对象比较的程序。

// 在类的内部增加一个比较的方法

public boolean compare(Person p){

Person p1 = this ;

Person p2 = p ;

if(p1.name.equals(p2.name)&&p1.age==p2.age){

return true ;

}else{

return false ;

}

} 

分析程序的运行过程:

class A{

private B b = null ;

public A(){

this.b = new B(this) ;

this.b.fun() ;

}

public void hello(){

System.out.println("Hello World!!!") ;

}

};

class B{

private A a = null ;

public B(A a){

this.a = a ;

}

public void fun(){

this.a.hello() ;

}

};

public class OODemo40{

public static void main(String args[]){

A aa = new A() ;

}

}; 

分享到:
评论

相关推荐

    【Java编程教程】详解Java this 关键字.pdf

    // 使用this关键字区分实例变量和构造函数参数 this.rollno = rollno; this.name = name; this.fee = fee; } void display() { System.out.println(rollno + " " + name + " " + fee); } } ``` 2. 调用...

    java中的关键字大全

    ### Java中的关键字大全 在Java编程语言中,关键字是一组预定义的词汇,它们具有特殊的含义和用途。理解和掌握这些关键字对于编写有效的Java程序至关重要。本文将详细介绍Java中的一些核心关键字,并提供相应的解释...

    Java this 关键字的使用方法详解

    Java this 关键字的使用方法详解 Java this 关键字是 Java 语言中一种特殊的引用变量,用于指代当前对象的引用。this 关键字的使用方法可以分为四种:构造方法中的 this、非构造方法中的 this、继承关系下的 this ...

    Java软件开发实战 Java基础与案例开发详解 5-7 this关键字 共5页.pdf

    ### Java软件开发实战:Java基础与案例开发详解之this关键字 #### 一、this关键字概述 在Java编程中,`this`关键字是一个非常重要且实用的概念。`this`关键字主要用于引用当前对象实例,使得开发者能够在方法内部...

    Java关键字大全 Java关键字大全

    18. `this`:`this`关键字引用当前对象的引用,通常用于区分实例变量和局部变量,或者在构造函数中调用其他构造函数。 19. `throw`:`throw`关键字用于抛出一个异常,中断当前程序流程,将控制权交给异常处理程序。...

    Java零基础-this关键字.md

    ### Java零基础-this关键字 #### 内容概要 本文主要介绍了Java编程语言中的`this`关键字及其在不同场景下的应用。通过本文的学习,初学者能够深入理解`this`关键字的作用,掌握其在实例方法、构造方法及内部类中的...

    java51个关键字详解

    Java编程语言中有51个关键字,它们在程序中扮演着至关重要的角色,用来定义类、接口、变量、方法以及控制程序流程。以下是一些主要的关键字及其解释: 1. `abstract`:抽象关键字,用于声明抽象类和抽象方法。抽象...

    java关键字、标识符、注释

    ### Java关键字、标识符、注释详解 #### 关键字(Keywords) 在Java语言中,关键字是具有特殊意义的保留字,它们不能用作变量名、方法名或类名等标识符。Java的关键字用于定义程序结构的重要组成部分,如控制语句、...

    详解Java super 关键字.pdf

    在Java编程中,`super`关键字是一个非常重要的概念,它允许子类引用其直接父类的实例变量、方法,甚至调用父类的构造函数。理解并熟练运用`super`关键字是成为一名合格的Java开发者的关键技能之一。 首先,`super`...

    【Java编程教程】详解Java final 关键字.pdf

    Java中的`final`关键字是一个非常重要的概念,它用于在编程中实现不可变性。下面是对`final`关键字的详细解释: ## Java最终变量 当一个变量被声明为`final`时,这意味着它的值一旦被赋值后就无法再改变。这在Java...

    java中的this关键字完全解读

    一文详解java中的this关键字 最近在看《java编程思想》感觉解决了很多以前学习Java遇到的疑惑。这里详细探讨一下this关键字的几大使用范畴:(应该也就只有以下几种用法) 首先this关键字只能在非静态方法内部使用。...

    JAVA this用法

    在 Java 编程语言中,this 关键字是一个非常重要的概念,它有多种用法,但基本上可以归纳为三种:表示当前对象的引用、表示类的成员变量和在构造方法中引用满足指定参数类型的构造器。下面将详细介绍这三种用法。 ...

    java中static关键字用法详解

    java中static关键字用法详解 Java中的static关键字是一个非常重要的概念,它在Java编程中扮演着非常重要的角色。本文将详细介绍Java中static关键字的用法,包括静态变量、静态方法和静态代码块等几个方面。 静态...

    Java关键字之this用法详解.rar

    在Java编程语言中,"this"是一个非常关键的引用关键字,它主要用来引用当前对象的实例变量,并在方法、构造器或初始化块中使用。理解并熟练运用"this"是成为一名合格的Java开发者的重要一步。下面我们将深入探讨...

    Java中的关键字synchronized 详解

    Java中的关键字synchronized 详解 Java中的关键字synchronized是Java语言中用于线程同步的关键字。它可以修饰方法或代码块,以便在多线程环境中保护共享资源的安全。 1、修饰普通方法 synchronized关键字可以修饰...

    java关键字、保留字

    ### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等...

    Java中Volatile关键字详解及代码示例

    Java中Volatile关键字详解及代码示例 一、基本概念 在Java中,Volatile关键字是一个非常重要的概念,它与Java内存模型中的可见性、原子性和有序性息息相关。可见性是指线程之间的可见性,一个线程修改的状态对另一...

    java关键字。必须记的

    ### Java关键字详解 #### Abstract `abstract` 是Java中的一个关键字,用于定义抽象类或抽象方法。抽象类是不能被实例化的类,主要用于提供子类一个基础模板,并强制子类去实现某些特定的方法。抽象方法是没有实现...

    this关键字的总结.doc

    ### Java中的this关键字详解 #### 一、概述 在Java编程语言中,`this`关键字是一种非常实用且灵活的关键字,它主要用于指代当前对象。`this`可以在类的内部被使用,帮助开发者清晰地表达代码逻辑,尤其是在解决...

Global site tag (gtag.js) - Google Analytics