首页 > 其他分享 >this和super的区别

this和super的区别

时间:2023-03-17 23:32:00浏览次数:23  
标签:初始化 调用 构造方法 区别 子类 父类 super

this和super的区别?

分别是什么?

this代表本类对应的引用

super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)

怎么用呢?

A:调用成员变量

this.成员变量 调用本类的成员变量

super.成员变量调用父类的成员变量

B:调用构造方法

this(...)调用本类的构造方法

super(...)调用父类的构造方法

C:调用成员方法

this.成员方法 调用本类的成员方法

super.成员方法 调用父类的成员方法

继承中构造方法的关系

A:子类中所有构造方法默认都会访问父类中空参数的构造方法

B:为什么?因为子类会继承父类中的数据,还可能使用父类的数据,所有子类初始化之前,一定要先完成父类数据的初始化。

注意:子类每一个构造方法的第一条语句默认都是:super();

image.png

如果父类没有无参构造方法,那么子类中的构造方法会出现什么现象如何解决?

报错

如何解决?

A:在父类中加一个无参构造方法

B:通过super关键字去显示的调用父类的带参构构造方法

C:子类通过this去调用本类的其他构造方法

子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化

注意事项:

this(...)或者super(...)必须出现在第一条语句上。

如果不是放在第一条语句上,就可能对父类的数据进行多次初始化

一个类的初始化过程

成员变量初始化--默认初始化--显示初始化--构造方法初始化

继承中·成员方法的关系

如果子类中的方法和父类中的方法声明一样?

通过子类对象调用方法:

A先找子类中,看有没有这个方法有就用

b再看父类中,有没有这个方法,有就用

c如果没有报错

方法重写的注意事项

A:父类中私有方法不能被重写因为父类私有方法子类根本就无法继承

B:子类重写父类的方法时,访问权限不能更低

c:父类静态方法,子类也必须通过静态方法进行重写

final:最终的意思。它可以修饰类,方法,变量

特点:

final可以修饰类,该类不能被继承

final可以修饰方法,该方法不能被重写

final可以修饰变量,该变量不能被重新赋值,因为这个变量其实是常量

final修饰局部变量A.基本类型 值不能变B.引用类型地址不能变。

image.png

final 修饰变量的初始化时机:

A:被final修饰的变量只能赋值一次

B:在构造方法完毕前。(非静态的常量)

标签:初始化,调用,构造方法,区别,子类,父类,super
From: https://blog.51cto.com/u_15977171/6128460

相关文章

  • List和Set的区别
    Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实......
  • List和Set的区别
    Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实......
  • CountDownLatch与CyclicBarrier分析及其区别
    相同点:CountDownLatch、CyclicBarrier均在jdk1.5引入的,并且都在concurrent包(用于并发处理)下。均用于实现线程同步。差异点:1CountDownLatch计数器只能使用一次。CyclicB......
  • 爬虫相关 https与http区别、bs4模块 遍历文档树、搜索文档树、find的其他参数、css选
    http与https的区别http和https的区别https=http+ssl/tslhttp版本区别0.9:底层基于tcp,每次http请求,都是建立一个tcp连接,三次握手,请求结束需要......
  • String、StringBuffer、StringBuilder区别与联系
      1.String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。2.StringBuffer类则代表一个字符序列可变的字符串......
  • String、StringBuffer、StringBuilder区别与联系
      1.String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。2.StringBuffer类则代表一个字符序列可变的字符串......
  • 直流充电桩和交流充电桩有什么区别?
    新能源汽车大家并不陌生,然而对充电桩可能不太了解,充电桩是利用充电接口,采取传导方式,为电动汽车提供电能的装置,主要分为立柱式、壁挂式和便携式三种,具有计费、通讯和安全防护......
  • 正向代理和反向代理的区别
    1、正向代理正向代理是基于客户端的代理,其用意就跟家用光猫一样,你的所有请求都是通过光猫,再由光猫进行转发请求,这就是正向代练,可以让你的真实ip地址隐藏掉,服务端没办......
  • 请你谈谈关于IO同步、异步、阻塞、非阻塞的区别
    对于一个networkIO(这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的process(orthread),另一个就是系统内核(kernel)。当一个read操作发生时,它会经历两个......
  • HashMap和HashTable的区别?
    HashMap不是线程安全的,HashTable是线程安全的。HashMap允许nullkey和nullvalue,而HashTable不允许HashMap把Hashtable的contains方法去掉了,改成containsV......