当前位置: > 财经>正文

子类继承父类后,可以直接调用父类的变量和方法,那为什么还用super调用呢?为什么在static方法中不能使用super与this? 外汇是属于理财吗还是基金呢为什么不能买呢

2023-09-05 10:56:46 互联网 未知 财经

子类继承父类后,可以直接调用父类的变量和方法,那为什么还用super调用呢?为什么在static方法中不能使用super与this?

1.子类继承父类后,可以直接调用父类的变量和方法,那为什么还用super调用呢?

原因:如果子类对父类的变量和方法进行了重写,你又想再使用父类的方法,这是就需要super来调用,否则默认调用你在子类中重写的变量和方法。

this():调用本类中其他重载的构造函数(必须写在函数中的第一行) super():调用父类中的构造函数(必须写在函数中的第一行) 它们不能存在于同一个构造方法中

this.XXX():调用在本类中重写的父类方法 super.XXX():调用父类中的方法 它们可以存在于同一个构造方法中

当this调用本类属性或方法、super调用父类属性或方法时,可以同时出现,也就是this.X和super.X可以同时出现; 当this调用本类构造器、super调用父类构造器时,不可以同时出现,也就是this()和super()不能同时出现

class Father {String str = "父类变量";String father = "父类独有变量";void testf() {System.out.println("父类方法");}void person() {System.out.println("父类独有方法");}} public class New05 extends Father{ String str = "子类重写变量";String child = "子类独有变量";void testf() {System.out.println("子类重写方法");}void boy() {System.out.println("子类独有方法");}void test() {testf();//访问子类的方法this.testf();//访问子类的方法super.testf();//访问父类的方法System.out.println(str);//访问子类的变量System.out.println(this.str);//访问子类的变量System.out.println(super.str);//访问父类的变量}public static void main(String[] args) {New05 a = new New05();a.test();}}

运行结果如下: 子类重写方法 子类重写方法 父类方法 子类重写变量 子类重写变量 父类变量

2.为什么在static方法中不能使用super与this?

原因: ①静态成员是随着类的加载而执行的,静态成员被执行的时候还没有对象产生。this表示当前对象,需要先创建对象,通过对象我们可以调用类中的非静态方法,当然,通过对象我们也可以调用静态方法,当这样做没有意义,并且容易使人产生误解,因为所有的对象调用的都是同一份静态方法,而不像非静态方法那样,每个对象都会有一个独立内存空间去存储非静态数据。

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。