【JAVA300集第一季】this、super隐式参数知识笔记

总结:每个普通方法中都有两个隐式参数:this、super

一:this关键字
Ⅰ:普通方法中,this总是指向调用该方法的对象;
Ⅱ:构造方法中,this总是指向正要初始化的对象;
Ⅲ:this不能用于static方法。

this作为隐式参数,在每个方法中都是作为参数传进去的。super也是一样的道理。

通过this调用其它构造方法的特殊用法:
package com.stduy;

public class Demo6 {
	String str;
	int num;
	
	public Demo6() {
		System.out.println("无参构造方法");
	}
	
	public Demo6(String str) {
		this.str=str;
		System.out.println("参数为str的构造方法");
	}
/*
 * 在构造方法中通过this调用其它构造方法时,this语句必须放在第一个语句中,位置不能乱
 * */
	public Demo6(String str,int num) {
		//在此构造方法中,通过this调用其它构造方法
		this(str);
		//this();
		this.str=str;
		this.num=num;
		System.out.println("参数为str、num的构造方法");
	}
	
	public static void main(String[] args) {
		String str=null;
		int num=0;
		Demo6 test=new Demo6(str,num);
	}
}

二:super关键字
super是直接父类对象的引用,可以通过super来访问父类中被子类覆盖的方法或属性。

对于普通方法:没有顺序限制,可以随便调用
对于构造方法:任何类的构造方法中,第一行都是隐性的调用了super(...);自己加不加都无所谓
public class Demo7 {
	public Demo7() {
		//super();
		System.out.println("执行demo7的构造函数");
	}
}

public class Demo7_1 extends Demo7 {
	public Demo7_1() {
		//super();
		System.out.println("执行7_1的构造函数");
	}

	public static void main(String[] args) {
		//Object test=new Object();
		Demo7_1 test=new Demo7_1();
	}

}

测试结果有没有两个构造方法中的super都是一样的。


执行demo7的构造函数
执行7_1的构造函数
因为所有的类的父类都是object,我们参照object类源码,查看其构造方法为无参构造方法:

 public Object() {}

    /**
     * Returns the runtime class of this {@code Object}. The returned
     * {@code Class} object is the object that is locked by {@code
     * static synchronized} methods of the represented class.
     *
     * <p><b>The actual result type is {@code Class<? extends |X|>}
     * where {@code |X|} is the erasure of the static type of the
     * expression on which {@code getClass} is called.</b> For
     * example, no cast is required in this code fragment:</p>
     *
     * <p>
     * {@code Number n = 0;                             }<br>
     * {@code Class<? extends Number> c = n.getClass(); }
     * </p>
     *
     * @return The {@code Class} object that represents the runtime
     *         class of this object.
     * @jls 15.8.2 Class Literals
     */
这样就能很好的理解继承中各个构造函数的执行顺序了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在开发一个物业管理系统时,需要考虑以下几个方面: 1. 系统的功能需求:需要根据系统的使用者(如物业管理员、住户)的角色和需求,确定系统的功能。例如,物业管理员可能需要查看住户信息、收取物业费、查看报修单等功能;住户可能需要提交报修单、缴纳物业费、查看公告等功能。 2. 系统的界面设计:使用 JavaFX 可以设计出美观的界面。需要设计各个功能的界面布局,方便使用者操作。 3. 数据存储:使用 MySQL 数据库可以方便地存储系统中的数据,包括住户信息、报修单、物业费记录等。 4. 数据处理:使用 JavaIO 可以读写文件,方便导入/导出系统中的数据。使用类框架(如 java.util.ArrayList)可以方便地管理系统中的数据。 5. 系统测试:在开发完成后,需要对系统进行测试,确保系统功能正常、界面友好、性能良好。 具体实现细节可以参考以下步骤: 1. 设计数据库 ### 回答2: 物业管理系统是一种用于管理物业维护、租赁和其他相关业务的软件系统。根据您的要求,我可以帮您设计并开发一个物业管理系统,满足以下需求: 1. 使用JavaFX界面:JavaFX 是 Java 平台的一个图形界面工具包,提供了丰富的界面控件和布局管理器,能够创建出美观且交互性强的用户界面。 2. 使用MySQL数据库:MySQL 是一种常用的关系型数据库管理系统,具有可靠性高、性能好和易于使用等特点。我将使用MySQL数据库来存储系统中的数据。 3. 使用JavaIO:Java标准库中的JavaIO包提供了对文件和流的操作。在物业管理系统中,我将使用JavaIO来读取和写入文件,以便导入和导出系统数据。 4. 使用类框架:Java合框架提供了一系列的类和接口,用于存储、操作和处理数据合。我将使用类框架来管理系统中的数据,例如使用List来存储物业信息,使用Map来存储租户信息等。 5. 数据库中的随机数据至少三百条:我将使用Java的随机数生成器来生成随机数据,然后将这些数据插入到MySQL数据库中。通过生成足够数量的数据,可以更好地测试系统的性能和稳定性。 综上所述,我将按照您的要求,使用JavaFX界面、MySQL数据库、JavaIO、类框架,并在数据库中生成至少三百条随机数据,来帮您设计和开发一个物业管理系统。这将是一个方便、易用且功能完善的系统,可以提高物业管理的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值