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_

目录
相关文章
|
19天前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
50 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
7 2
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
30 4
|
2月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
19天前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
11 0
|
2月前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
|
2月前
|
Java 开发者
Java编程之旅:探索面向对象的力量
【9月更文挑战第16天】在编程的世界中,Java以其强大的面向对象编程特性而闻名。本文将带你走进Java的世界,一起探索类与对象的奥秘,学习如何通过封装、继承和多态性构建健壮的软件系统。无论你是初学者还是有经验的开发者,本文都旨在提供实用的代码示例,帮助你提升Java技能。准备好开始这段旅程了吗?让我们启程吧!
|
5月前
|
缓存 安全 Java
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
31 0
|
6月前
|
安全 Java 编译器
Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字(一)
线程安全问题是多线程编程中最典型的一类问题之一。如果多线程环境下代码运行的结果是符合我们预期的,即该结果正是在单线程环境中应该出现的结果,则说这个程序是线程安全的。 通俗来说,线程不安全指的就是某一代码在多线程环境下执行会出现bug,而在单线程环境下执行就不会。线程安全问题本质上是由于线程之间的调度顺序的不确定性,正是这样的不确定性,给我们的代码带来了很多“变数”。 本文将对Java多线程编程中,线程安全问题展开详细的讲解。
95 0