`

面向对象编程之this关键字

阅读更多

this:代表对象本身(已经存在对象、即将创建的对象 -->操作对象)

1、this.属性: 区分属性与局部变量同名

2、this.方法(实参) :成员方法间相互调用

3、this([实参]) :构造器首行,构造器之间相互调用

4、this单独使用: 经常用于比较或者查看hashcode

 

 

注意:每个成员方法|构造器隐式包含this参数

1. this:代表对象本身,谁调用代表谁

2. this不能直接使用在静态方法中

3. 当前类中,类.this可以省略。

4. 构造器中避免出现递归调用,解决方法:至少有一个方法没有this([])

 

解析一、

package com.zad.my_this;

/**
 * 每个成员方法|构造器隐式包含this参数
 * this: 代表对象本身,谁调用代表谁
 * this不能使用在静态方法中
 * 1、this.属性 :访问对象的属性 ,区分 形参与属性同名
 * 2、this.方法([实参]) :成员方法调用
 * 3、this([实参]) : 构造器重载时,相互调用
 * 		注意:必须放在构造器首行
 * 4、this 单独使用时,用于比较
 * @author zhongaidong
 */
public class ThisDemo01 {
	public int n = 0;
	public String str = "abc";

	// 对对象进行了初始化
	ThisDemo01() {
		// this.属性
		// /*ThisDemo01.this.*/n = 20;
		// 构造器首行
		this(20);
	}

	ThisDemo01(int n) {
		// this.属性
		ThisDemo01.this.n = n;
		System.out.println(n);
	}

	public void p() {
		// this.方法([实参])
		this.test();
	}

	public void test(/* ThisDemo01 this */) {
		this.n = 30;
		System.out.println(this);
	}

	public static void main(String[] args) {
		ThisDemo01 demo = new ThisDemo01();
		System.out.println(demo + "-->");
		System.out.println(demo.n);
		demo.test();
		System.out.println(demo.n);

		// this 不能直接使用在静态方法中
		// ThisDemo01 dem02 = this;
	}
}

 解析二、

package com.zad.my_this;

/**
 * 构造器中避免出现递归调用
 * 	解决方法:让至少一个方法没有this([])
 * @author zhongaidong
 */
public class ThisDemo02 {
	public int n = 0;
	public String str = "abc";
	
	ThisDemo02(){
		this(20);
	}
	
	ThisDemo02(int n){
		this(n,"30");
	}
	
	ThisDemo02(int n, String str){
		// this(n);  --> 这样会导致递归调用
		this.n = n;
		this.str = str;
	}
	
	public static void main(String[] args){
		
	}
}

 解析三、

package com.zad.my_this;

/**
 * this 单独使用时,用于比较
 * 
 * @author zhongaidong
 */
public class ThisDemo03 {
	public static void main(String[] args) {
		Book b1 = new Book("test",20);
		Book b2 = new Book("test",20);
		System.out.println(b1 == b2);
		System.out.println(b1.equals(b2));
	}
}

// 图书上架,业务规则:名称相同  + 价格相同
class Book{
	public String name;
	public double price;
	
	public Book(){
		
	}
	
	public Book(String name, double price){
		this.name = name;
		this.price = price;
	}
	
	// 比较内容相同
	public boolean equals(/* Book this, */ Book b2){
		// 地址相同,内容一定相同
		if(this == b2){
			return true;
		}
		
		// 名称相同 + 价格相同
		if(this.name.equals(b2.name) && this.price == b2.price){
			return true;
		}
		return false;
	}
}

 

分享到:
评论

相关推荐

    Java面向对象程序设计this关键字.pptx

    Java面向对象程序设计中的"this"关键字在农业信息系统开发中扮演着重要的角色。在Java编程中,"this"是一个特殊的引用变量,它指向当前对象的实例。在农业信息系统的类结构中,"this"关键字可以帮助开发者更加清晰地...

    js this关键字_面向对象编程.pdf

    虽然 JavaScript 最初并不是一种面向对象的语言,但通过其独特的特性——特别是 `this` 关键字和基于原型的继承机制——它可以用来实现面向对象编程。本文将深入探讨 JavaScript 中面向对象编程的核心概念和技术。 ...

    Javascript面向对象编程.

    在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...

    020509_【第5章:面向对象基础】_this关键字与static关键字

    面向对象编程是Java的核心特性,本章节主要探讨了两个关键概念——`this`关键字和`static`关键字。在深入理解这两个概念之前,我们先要明白面向对象编程的基本思想:封装、继承和多态。 `this`关键字在Java中用于...

    Java面向对象编程思想.pdf

    Java 面向对象编程思想是 Java 编程语言的核心思想之一,通过封装、继承和多态三个特征,实现代码的重用和可维护性。 一、封装 封装是 Java 面向对象编程的三大特征之一,通过 Java 的类来实现数据和操作方法的...

    Java面向对象(进阶)- this关键字的使用

    本文将深入探讨`this`关键字的使用,特别是在Java面向对象编程的进阶场景中。 首先,我们来明确`this`是什么。`this`关键字在Java中代表当前对象的引用,即调用当前方法或构造器的那个对象。在实例方法或构造器内部...

    JavaScript面向对象编程指南.pdf

    JavaScript面向对象编程是指在JavaScript语言中使用面向对象的方法来编写程序。JavaScript是一种高级的、解释型的编程语言,它支持面向对象的编程范式,允许开发者创建对象、使用继承和多态等面向对象的特性。以下是...

    详谈PHP面向对象中常用的关键字和魔术方法

    在PHP的面向对象编程中,有多个关键字和魔术方法是经常被用到的,它们各有特定的用途和含义。下面将逐一详细介绍。 首先,关键字`final`在PHP面向对象编程中有着重要的作用。使用`final`关键字可以限定一个类不能被...

    第04章 面向对象(上) 07 This关键字

    面向对象编程是Java语言的核心特性之一,而"this"关键字在Java中扮演着至关重要的角色。本章节将深入探讨"this"关键字的概念、用途以及它如何在面向对象编程中发挥作用。 1. this关键字的含义: "this"关键字在...

    JavaScript面向对象编程指南(第2版).rar

    面向对象编程(Object-Oriented Programming,OOP)是JavaScript中的一个重要概念,它允许开发者通过对象来组织代码,提高可读性和可维护性。本指南的第二版深入探讨了JavaScript的面向对象特性,旨在帮助开发者更好...

    面向对象设计 6 —— PHP5面向对象进阶(关键字 this)

    本文将深入探讨PHP5中的"this"关键字,它是面向对象编程中一个至关重要的概念,用于在类的方法内部引用当前对象。 首先,"this"关键字在PHP5中是一个特殊的变量,它代表了调用该方法的对象实例。当我们在一个类的...

    Java面向对象的学习(关键字)

    在Java编程语言中,面向对象的概念是核心特性之一。本文将深入探讨`super`和`this`两个关键字的使用,以及访问权限修饰符和方法重写的重要知识点。 首先,`super`关键字代表父类的对象,它用于在子类中访问父类的...

    JavaScript面向对象编程指南

    在JavaScript中,面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它允许开发者创建复杂、可重用的代码结构。本指南将深入探讨JavaScript中的面向对象特性,包括类、对象、继承、封装和...

    JAVA面向对象编程思想

    **概念**:封装是面向对象编程的核心之一,它指的是将数据(属性)和方法(行为)绑定在一起,形成一个独立的单元——类。通过这种方式,外部无法直接访问对象内部的数据,只能通过对象提供的方法来操作数据。 **...

    JavaScript面向对象编程指南 pdf

    面向对象编程(Object-Oriented Programming,OOP)是JavaScript中的一个重要概念,它允许开发者以更加模块化、可复用的方式组织代码。下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **...

    Javascript面向对象编程

    ### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...

    VBS面向对象编程与Me关键字使用介绍

    面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将程序设计中的实体(如数据和操作)封装在一起,形成了具有独立特性的对象。VBScript(Visual Basic Scripting Edition)作为一门轻量级的脚本...

Global site tag (gtag.js) - Google Analytics