java继承、super 、this 细节

继承的本质分析

        访问属性自己没有,而且只要父类中有该属性,且父类中该属性是私有的。则会报错

那么如果父类的父类也有该属性,且是Public呢?子类不会继续访问的,到上面父类有这个私有属性的时候就会停止访问。。。。。。

  继承输出,从父类依次输出A类->B类->C类

继承设计的基本思想,父类的构造器完成父类属性初始化 ;子类的构造器完成子类属性初始化

(super.call()) 的顺序是直接查找父类,其他的规则一样

构造器与setter方法的联系与区别

      说白了,构造器初始化,setter 修改属性    比如 构造器==出场的汽车,   setter == 后期改装车辆轮胎,玻璃

构造器(Constructor)

  • 构造器是一种特殊的方法,用于初始化对象的状态。当你使用new关键字创建对象时,构造器会被自动调用。
  • 构造器必须与类名相同,并且不能有返回类型(即使是void也不行)。
  • 构造器用于在对象创建时设置其初始状态,因此它通常接受与对象的属性相对应的参数,并将这些参数的值赋给对象的属性。

Setter方法

  • Setter方法是一种常规的方法,用于在对象创建后修改其属性的值。
  • Setter方法通常有一个与属性名称相对应的名称,前面加上set前缀,并接受一个参数,该参数的类型与属性的类型相匹配。
  • Setter方法内部通常包含一个语句,将传入的参数值赋给对象的相应属性。

联系

  1. 目的:构造器和setter方法都是为了设置对象的属性。构造器在对象创建时设置初始状态,而setter方法在对象生命周期内的任何时候都可以用来修改属性的值。

  2. 封装性:两者都是面向对象编程中封装性的体现。封装性要求将对象的内部状态(即其属性)隐藏起来,只通过公共的方法来访问和修改这些状态。构造器和setter方法都是公共的接口,用于访问和修改对象的内部状态。

  3. 校验和逻辑处理:构造器和setter方法都可以包含校验逻辑或其他业务逻辑。例如,你可以在setter方法中检查传入的值是否合法,或者在构造器中根据传入的参数执行某些初始化操作。

区别

  1. 调用时机:构造器在对象创建时被调用一次,而setter方法可以在对象创建后的任何时候被调用多次。

  2. 参数列表:构造器的参数列表通常与对象的所有属性相对应,用于初始化对象的所有属性。而setter方法通常只接受一个参数,用于修改对象的单个属性。

  3. 返回值:构造器没有返回值,而setter方法通常返回void

super关键字和super()调用在用法和意义上存在明显的区别。

首先,super关键字主要用于在子类中引用父类的成员变量或方法。当子类和父类拥有相同的成员变量或方法时,可以使用super关键字来明确指定要访问的是父类的成员。通过使用super关键字,可以避免在子类中创建与父类相同名称的变量或方法,同时也可以确保在子类中能够访问父类的成员。例如,你可以在子类的成员方法中使用super.属性super.方法的形式来访问父类中声明的属性或方法。

另一方面,super()是用于调用父类的构造方法。在子类的构造方法中,你可以使用super(形参列表)的形式来调用父类中声明的指定的构造器。这样做是为了确保父类得到正确的初始化,因为在Java中,构造器的调用是自动从子类传递到父类的。

总结来说,super关键字用于在子类中引用父类的成员变量或方法,而super()则用于在子类的构造方法中调用父类的构造方法。两者在Java的面向对象编程中各自扮演着重要的角色,帮助实现代码的继承性和复用性。

方法在方法区中查找,属性在堆中的对象中找

super 与 this 比较

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值