做网站要看什么书,工作正能量励志句子,互联网运营,哈尔滨关键词排名工具1#xff1a;成员变量。 当子父类中出现一样的属性时#xff0c;子类类型的对象#xff0c;调用该属性#xff0c;值是子类的属性值。 如果想要调用父类中的属性值#xff0c;需要使用一个关键字#xff1a;super This#xff1a;代表是本类类型的对象引用。 Super…1成员变量。 当子父类中出现一样的属性时子类类型的对象调用该属性值是子类的属性值。 如果想要调用父类中的属性值需要使用一个关键字super This代表是本类类型的对象引用。 Super代表是子类所属的父类中的内存空间引用。 注意子父类中通常是不会出现同名成员变量的因为父类中只要定义了子类就不用在定义了直接继承过来用就可以了。 2成员函数。 当子父类中出现了一模一样的方法时建立子类对象会运行子类中的方法。好像父类中的方法被覆盖掉一样。所以这种情况是函数的另一个特性重写 3构造函数。 发现子类构造函数运行时先运行了父类的构造函数。为什么呢? 原因子类的所有构造函数中的第一行其实都有一条隐身的语句super(); super(): 表示父类的构造函数并会调用于参数相对应的父类中的构造函数。而super():是在调用父类中空参数的构造函数。 为什么子类对象初始化时都需要调用父类中的函数(为什么要在子类构造函数的第一行加入这个super()?) 因为子类继承父类会继承到父类中的数据所以必须要看父类是如何对自己的数据进行初始化的。所以子类在进行对象初始化时先调用父类的构造函数这就是子类的实例化过程。 注意子类中所有的构造函数都会默认访问父类中的空参数的构造函数因为每一个子类构造内第一行都有默认的语句super(); 如果父类中没有空参数的构造函数那么子类的构造函数内必须通过super语句指定要访问的父类中的构造函数。 如果子类构造函数中用this来指定调用子类自己的构造函数那么被调用的构造函数也一样会访问父类中的构造函数。 问题 super()和this()是否可以同时出现的构造函数中 两个语句只能有一个定义在第一行所以只能出现其中一个。 super()或者this():为什么一定要定义在第一行 因为super()或者this()都是调用构造函数构造函数用于初始化所以初始化的动作要先完成。 在方法覆盖时注意两点 1子类覆盖父类时必须要保证子类方法的权限必须大于等于父类方法权限可以实现继承。否则编译失败。举个例子在父类中是public的方法如果子类中将其降低访问权限为private那么子类中重写以后的方法对于外部对象就不可访问了这个就破坏了继承的含义 2覆盖时要么都静态要么都不静态。 (静态只能覆盖静态或者被静态覆盖) 继承的一个弊端打破了封装性。对于一些类或者类中功能是需要被继承或者复写的。 这时如何解决问题呢介绍一个关键字final。 final特点详细解释见前面 1这个关键字是一个修饰符可以修饰类方法变量。 2被final修饰的类是一个最终类不可以被继承。 3被final修饰的方法是一个最终方法不可以被覆盖。 4被final修饰的变量是一个常量只能赋值一次。转载于:https://www.cnblogs.com/caomeipiper/p/8507398.html