Super关键子的一些用法 java
super表示使用它的类的父类(注意:super只发生在子类中),有以下用法:
1、调用父类的构造方法
2、调用父类的方法(子类覆盖了父类的方法时)
3、访问父类的数据域(可以这样用但是没必要这样用)
(1)调用父类的构造方法语法:
当父类只有一个参数的构造函数的时候,子类也必须要具有这个构造函数,或者调用super方法实现新的构造函数。
举一个例子:
如果父类有定义构造函数而子类不定义构造函数:
就会出现这样的错误:
如果需要定义新的构造函数(有一点需要注意的是在构造函数里的super方法必须写在第一行),以下是我写一个简单的问题的一些代码,目的是将super在子类定义新的构造函数这一方面理解得更加清楚。
以上我们可以看出super在定义新的构造函数的方面所起的作用,但是 上面有一个地方我也不太清楚,就是Apple的那个类,getAmount()的哪个方法中,如果用this.price,程序就无法运行,但是改为getPrice()就可以了,我知道因为是price是一个私有对象,但还是理解的不清楚,希望有理解的大神帮我解答一下。
super语句必须是子类构造方法的第一条语句。不能在子类中使用父类构造方法名来调用父类构造方法。父类的构造方法不能被子类继承。调用父类的构造方法的唯一途径是使用super关键字,如果子类中没有显式调用,则编译器自动将super();作为子类构造方法的第一条语句。这会形成一个构造方法链。
静态方法中不能使用super关键字。
(2)调用父类的方法语法
运行结果:
子类运用super调用父类一般会发生在父类有一些通用的逻辑可以被执行。如果子类覆盖或者重写了父类的方法,则只有使用super才能在子类中调用父类中被重写的方法。
(3)访问父类的数据域(可以这样用但是没必要这样用)