子类要调用父类的方法,必须使用super关键字.对吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子类要调用父类的方法,必须使用super关键字.对吗?相关的知识,希望对你有一定的参考价值。
在继承结构里面,为了保护封闭原则,通常子类以继承之后,子类可以直接调用父类非私有方法,也就是除了private修饰的方法。从多太的角度来看,子类是可以继承父类的方法,如果一个子类继承了父类的方法,那么不用super关键字就是调用本类的方法,如果想调用父类的话就要加super。
比如:
public abstract class TestA()
public void a()
System.out.println("this is a method.");
protected void b()
System.out.println("this is b method.");
private void c()
System.out.println("this is c method.");
public class TestC extends TestA()
//该方法为子类方法,非父类方法。
public void aa()
super.a(); //Yes
a():// Yes 等同 super.a();
super.b(); //Yes
b(); //Yes 等同 super.b();
super.c(); // no 访问不到。
c(); // NO 访问不到。
//覆盖父类方法
protected void b()
System.out.println("this is TestC b method.");
public void d()
b(); //调用本类的方法
super.b(); //调用父类的方法
参考技术A 不需要,但是如果你子类如果重写了父类的方法,那么在你想掉父类的方法的时候就必须写成super.method()这种方式了本回答被提问者和网友采纳 参考技术B 不对~~~~~~~~
在调用或重载父类的构造方法时才要 参考技术C 没错,非静态。
super和this关键字
一. super关键字
super 表示使用它的类的父类。super 可用于:
- 调用父类的构造方法;
- 调用父类的方法(子类覆盖了父类的方法时);
- 访问父类的数据域(可以这样用但没有必要这样用)。
调用父类的构造方法语法:
super();
或
super(参数列表);
注意:super 语句必须是子类构造方法的第一条语句。不能在子类中使用父类构造方法名来调用父类构造方法。
父类的构造方法不被子类继承。调用父类的构造方法的唯一途径是使用 super 关键字,如果子类中没显式调用,
则编译器自动将 super(); 作为子类构造方法的第一条语句。
调用父类的方法语法:
super.方法名(参数列表);
如果是继承的方法,是没有必要使用 super 来调用,直接即可调用。但如果子类覆盖或重写了父类的方法,
则只有使用 super 才能在子类中调用父类中的被重写的方法。
二. this关键字
this 关键字表示当前对象。可用于:
- 调用当前类的构造方法,并且必须是方法的第一条语句。如:this(); 调用默认构造方法。this(参数); 调用带参构造方法。
- 限定当前对象的数据域变量。一般用于方法内的局部变量与对象的数据域变量同名的情况。如 this.num = num。this.num 表示当前对象的数据域变量 num,而 num 表示方法中的局部变量。
以上是关于子类要调用父类的方法,必须使用super关键字.对吗?的主要内容,如果未能解决你的问题,请参考以下文章