Java 25天基础-DAY 05-面向对象-this关键字

简介: Java 25天基础-DAY 05-面向对象-this关键字

一、this关键字
/*
this关键字:看上去,是用于区分局部变量和成员变量同名的情况。

this为什么可以解决这个问题?
this到底代表的是什么呢?
this的特点:

this代表的是本类的对象,到底代表那一个呢?
this代表他所在函数所属对象的引用。
也就是那个对象在调用this所在的函数,this就代表那个对象。

this的应用:

当定义类中的函数时,该函数内部要用到调用该函数的对象时,这时this来表示这个对象,
但凡本类函数内部使用了本类对象,都用this表示。

*/
class Person
{

private String name;
private int age;
Person(int age)
{
    this.age=age;//谁调用this代表谁,这里代表p1
}

Person(String name)//为了让变量名有意义,将变量名n改成name但是输出结果为null.
{
    this.name=name;
}

Person (String name,int age)
{
    this (name);

//构造函数中的函数调用。只能放在构造函数的第一行。因为初始化要先执行。
//这个this调用的是上面的函数,代表p(name)


//  this.name = name;
    this.age = age;
}
public void speak()
{
    System.out.println("name="+name+",,age="+age);
}
/*
    需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人。
*/

public boolean compare (Person p)//返回一个布尔型的数据
{
    return this.age==p.age;//谁调用代表谁,这里代表p1
}

}
class gzhs2
{

public static void main(String[] args) 
{
//    Person p =new Person("赵四");
//    Person p1 =new Person("刘能");
//    p.speak();
//    p1.speak();
    Person p1 = new Person(20);
    Person p2 = new Person(22);
    boolean d = p1.compare(p2);
    System.out.println(d);

    Person p = new Person ("赵四");
    p.speak();

    test t = new test ("赵四");
    

}

}
_
二、this关键字的应用
this_
三、 this关键字在构造函数间的调用

构造函数中的函数调用。只能放在构造函数的第一行。因为初始化要先执行,当
这个this调用的是上面的函数,代表p(name)
注意不要来回调用,避免出现死循环。
this()只能用在构造函数间,不能用在不同函数中。
使用场景:
只暴露一个构造函数提供给客户使用,隐藏构造函数内的其他初始化值。下图只调用了Person(String name,int age)这个构造函数。
this_

目录
相关文章
|
7天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
8天前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
25 2
|
1月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
4天前
|
Java 开发者
Java编程之旅:探索面向对象的力量
【9月更文挑战第16天】在编程的世界中,Java以其强大的面向对象编程特性而闻名。本文将带你走进Java的世界,一起探索类与对象的奥秘,学习如何通过封装、继承和多态性构建健壮的软件系统。无论你是初学者还是有经验的开发者,本文都旨在提供实用的代码示例,帮助你提升Java技能。准备好开始这段旅程了吗?让我们启程吧!
|
28天前
|
Java 开发者 C++
|
1月前
|
存储 Java
Java面向对象面试题总结(上)
在Java中,重写(Override)与重载(Overload)是两个重要的概念,关联到方法的定义与调用。重写是指子类对继承自父类的方法进行新的实现,以便提供子类特有的行为,其关键在于方法签名一致但方法体不同。重载则允许在同一个类中定义多个同名方法,只要参数列表不同即可,以此提供方法调用的灵活性。重写关注多态性,而重载强调编译时多态。
20 1
|
20天前
|
存储 Java 数据库连接
Java编程之旅:从基础到高级,探索面向对象的力量
【8月更文挑战第31天】本文是一篇深入浅出的Java编程指南,旨在通过生动的例子和实际代码演示,带领读者从Java的基础语法起步,逐步深入到面向对象的核心概念,最后探讨如何在实际项目中应用这些知识。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
|
1月前
|
Java 数据安全/隐私保护
【Java 第五篇章】面向对象
封装隐藏对象内部细节,仅暴露出必要的接口,提升代码的安全性和可维护性。通过private修饰属性并提供公有的getter和setter方法实现。权限修饰符从private到public控制着访问范围,从类内到整个项目。封装可用于类及其内部结构。
14 0
|
7天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
|
1月前
|
Java
【Java基础面试四十一】、说一说你对static关键字的理解
这篇文章主要介绍了Java中static关键字的概念和使用规则,强调了类成员与实例成员的区别及其作用域的限制。