Java中的继承关系,子类不需要写super关键字。也能调用到父类的方法么?
8个回答
展开全部
在继承结构里面,为了保护封闭原则,通常子类以继承之后,子类可以直接调用父类非私有方法,也就是除了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(); //调用父类的方法
}
}
从多太的角度来看,子类是可以继承父类的方法,如果一个子类继承了父类的方法,那么不用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(); //调用父类的方法
}
}
展开全部
可以的,super是调用父类被子类覆盖的方法,只要把子类对象的引用赋值给父类的对象就可以调用父类的方法
更多追问追答
追问
什么是覆盖的方法,是不是在父类里面有的方法,但是子类中没有的方法?
追答
不是,就是子类重写了父类的方法,子类中跟父类同名的方法,但是不同参数,这样子类就覆盖了父类的方法,可以用super关键字来调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1不睡觉的鱼.误人子弟。子类对象指向父类,根据java多态的因素,它会调用子类的方法。因为jvm在运行时会判断对象的实际类型。
什么是覆盖的方法,是不是在父类里面有的方法,但是子类中没有的方法?
你说这话就错误。其实父类有的方法,子类全都有。这才叫继承。
什么是覆盖的方法,是不是在父类里面有的方法,但是子类中没有的方法?
你说这话就错误。其实父类有的方法,子类全都有。这才叫继承。
追问
那你解释下,为什么不用super关键字也能调用到父类的方法?
追答
w2007107729|三级 看他的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了构造方法和重写的方法(就是@override),需要显示调用super关键字外,调用其他普通方法是不需要写super的。
当然只能调用protected和public的
当然只能调用protected和public的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该可以,因为子类在继承父类的时候就相应的继承了父类的方法,只是说对于方法,需要重写的时候就要用super啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询