面向对象编程(进阶)1:关键字:this

这篇具有很好参考价值的文章主要介绍了面向对象编程(进阶)1:关键字:this。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.1 this是什么?

1.2 什么时候使用this

1.2.1 实例方法或构造器中使用当前对象的成员

举例1:

举例2:

测试类:

1.2.2 同一个类中构造器互相调用

注意:

1.3 练习

**练习1:**

练习2:


1.1 this是什么?

  • 在Java中,this关键字不算难理解,它的作用和其词义很接近。

    • 它在方法(准确的说是实例方法或非static的方法)内部使用,表示调用该方法的对象
    • 它在构造器内部使用,表示该构造器正在初始化的对象。
  • this可以调用的结构:成员变量、方法和构造器

1.2 什么时候使用this

1.2.1 实例方法或构造器中使用当前对象的成员

在实例方法或构造器中,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的可读性。不过,通常我们都习惯省略this。

但是,当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加this来表明该变量是类的成员变量。即:我们可以用this来区分成员变量局部变量。比如:

面向对象编程(进阶)1:关键字:this

另外,使用this访问属性和方法时,如果在本类中未找到,会从父类中查找。这个在继承中会讲到。

举例1:

class Person{		// 定义Person类
	private String name ;	
	private int age ;			
	public Person(String name,int age){	
		this.name = name ;   
		this.age = age ;  
    }
    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age = age;
    }
	public void getInfo(){	
		System.out.println("姓名:" + name) ;
		this.speak();
	}
	public void speak(){
		System.out.println(“年龄:” + this.age);	
	}
}

举例2:

public class Rectangle {
    int length;
    int width;

    public int area() {
        return this.length * this.width;
    }

    public int perimeter(){
        return 2 * (this.length + this.width);
    }

    public void print(char sign) {
        for (int i = 1; i <= this.width; i++) {
            for (int j = 1; j <= this.length; j++) {
                System.out.print(sign);
            }
            System.out.println();
        }
    }

    public String getInfo(){
        return "长:" + this.length + ",宽:" + this.width +",面积:" + this.area() +",周长:" + this.perimeter();
    }
}

测试类:

public class TestRectangle {
    public static void main(String[] args) {
        Rectangle r1 = new Rectangle();
        Rectangle r2 = new Rectangle();

        System.out.println("r1对象:" + r1.getInfo());
        System.out.println("r2对象:" + r2.getInfo());

        r1.length = 10;
        r1.width = 2;
        System.out.println("r1对象:" + r1.getInfo());
        System.out.println("r2对象:" + r2.getInfo());

        r1.print('#');
        System.out.println("---------------------");
        r1.print('&');

        System.out.println("---------------------");
        r2.print('#');
        System.out.println("---------------------");
        r2.print('%');
    }
}

1.2.2 同一个类中构造器互相调用

this可以作为一个类中构造器相互调用的特殊格式。

  • this():调用本类的无参构造器
  • this(实参列表):调用本类的有参构造器
public class Student {
    private String name;
    private int age;

    // 无参构造
    public Student() {
//        this("",18);//调用本类有参构造器
    }

    // 有参构造
    public Student(String name) {
        this();//调用本类无参构造器
        this.name = name;
    }
    // 有参构造
    public Student(String name,int age){
        this(name);//调用本类中有一个String参数的构造器
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String getInfo(){
        return "姓名:" + name +",年龄:" + age;
    }
}

注意:

  • 不能出现递归调用。比如,调用自身构造器。
    • 推论:如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了"this(形参列表)"
  • this()和this(实参列表)只能声明在构造器首行。
    • 推论:在类的一个构造器中,最多只能声明一个"this(参数列表)"

1.3 练习

**练习1:**

添加必要的构造器,综合应用构造器的重载,this关键字。

面向对象编程(进阶)1:关键字:this

练习2:

(1)按照如下的UML类图,创建相应的类,提供必要的结构:

面向对象编程(进阶)1:关键字:this

在提款方法withdraw()中,需要判断用户余额是否能够满足提款数额的要求,如果不能,应给出提示。deposit()方法表示存款。

(2)按照如下的UML类图,创建相应的类,提供必要的结构

面向对象编程(进阶)1:关键字:this

(3)按照如下的UML类图,创建相应的类,提供必要的结构

面向对象编程(进阶)1:关键字:this

  • addCustomer 方法必须依照参数(姓,名)构造一个新的 Customer对象,然后把它放到 customer 数组中。还必须把 numberOfCustomer 属性的值加 1。

  • getNumOfCustomers 方法返回 numberofCustomers 属性值。

  • getCustomer方法返回与给出的index参数相关的客户。

(4)创建BankTest类,进行测试。

内存解析图:

面向对象编程(进阶)1:关键字:this文章来源地址https://www.toymoban.com/news/detail-411924.html

到了这里,关于面向对象编程(进阶)1:关键字:this的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【java面向对象中static关键字】

    【java面向对象中static关键字】

    static修饰成员变量 static修饰成员变量的应用场景 static修饰成员方法 static修饰成员方法的应用场景 static的注意事项 static的应用知识:代码块 static的应用知识:单例设计模式 static静态的意思,可以修饰成员变量,成员方法; static修饰成员变量: 1.有static修饰的成员变量叫做

    2024年02月13日
    浏览(11)
  • Java编程练习之this关键字

    Java编程练习之this关键字

    当类中的成员变量与成员方法中的参数重名时,会导致方法无法直接使用成员变量。 示例:创建demo类,定义一个成员变量name并赋初值,再定义一个成员方法showName(String name),输出方法中name的值。代码如下: package zhtestdemo; public class demo {  //创建类,类名叫demo /**/     Str

    2024年01月22日
    浏览(13)
  • java面向对象——继承以及super关键字

    java面向对象——继承以及super关键字

    在 同⼀类 中,存在⽅法名相同,参数列表不同(个数、类型或顺序不同)的⽅法互为重载。 在 继承关系 中,⼦类声明⼀个继承⾃⽗类的⽅法名相同、参数列表相同,返回值类型⼀致,访问修饰符相同或 变⼤,抛出异常相同或缩⼩的⽅法称为重写。 重载是编译时多态,重写

    2024年02月12日
    浏览(7)
  • 面向对象(八)-- static 与 final 关键字 的使用

    目录 1.  static 1.1  static 的概述 1.2  static 修饰的特点 1.3  static 使用时的注意事项:

    2023年04月25日
    浏览(41)
  • 【C++干货基地】面向对象核心概念 const成员函数 | 初始化列表 | explicit关键字 | 取地址重载

    【C++干货基地】面向对象核心概念 const成员函数 | 初始化列表 | explicit关键字 | 取地址重载

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 : 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活!   哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作

    2024年04月23日
    浏览(12)
  • 【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

    【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

    掌握final 的主要作用及使用; 掌握对象多态性的概念以及对象转型的操作; 掌握instanceof 的主要作用及使用; 在Java 中 final称为终结器,在Java 里面可以使用 final定义类、方法和属性,用于表示不可变性 。 final 类:当一个类被声明为 final 时,意味着该类不能被

    2024年02月16日
    浏览(37)
  • class_10:this关键字

    class_10:this关键字

    this是指向调用对象的指针    链式调用   在这个例子中,Car类的构造函数使用this指针来区分成员变量好人构造函数参数。同意,setYear成员函数使用this指针来返回该函数的对象的引用,这允许链式调用,如

    2024年01月20日
    浏览(11)
  • C# this关键字的作用

    在C#中, this 有以下几种主要作用: 引用当前对象: this  用于引用当前类的实例。可以通过  this  来访问当前对象的成员变量、方法和属性。 区分字段与局部变量:当成员变量和局部变量同名时,可以使用  this  来区分。 在构造函数中调用其他构造函

    2024年02月22日
    浏览(14)
  • this关键字的四种用法

    表示对象自己的属性使用this调用成员变量,解决变量与局部变量之间的冲突问题 代码如下(示例): 代码如下(示例): 控制台运行结果: 分析:为什么会出现这种情况呢?当我们调用构造方法所传递的三个参数值“张三”、20和178.5最终并没有赋值到对象的三个属性中。

    2023年04月22日
    浏览(11)
  • 【JS】JavaScript中的this关键字

    目录 this是什么? this的指向 ①全局环境 ②构造函数 ③对象的方法 this的四类调用方式 ①作为对象方法调用 ②纯粹的函数调用 ③作为构造函数调用 ④使用apply、call、bind调用 举例说明 JavaScript  this  指的是它所属的对象。 它拥有不同的值,具体取决于它的使用位置:

    2024年02月14日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包