
public class $ {
public static void main(String[] args) {
A a1 = new A();
a1test(100);
A a2 = new B();
a2test(100);
A a3 = new C();
a3test(100);
}
}
class A {
public void test(int i) {
Systemoutprintln("A");
}
}
class B extends A {
public void test(int i) {
Systemoutprintln("B");
}
}
class C extends B {
public void test(int i) {
// supertest(i);
Systemoutprintln("C");
}
}
A
B
C
的方法的。跟你说底层实现你也不懂,从面向对象上来说吧。
父类先于子类存在,子类从父类中生出来,所以子类知道父类,可以调用父类方法。但父类不知道子类,子类可以任意的出生,只要你愿意,所以父类无法调用子类,他不知他会有这样的子类,也不知有多少个子类,但子类的父类是唯一的。
简单点就是在java中父类是不能调用子类的方法的。
public class TestSuper
{
public static void main(String[] args)
{
Systemoutprintln("\n\t\t==========如何重写set/get 和调用父级的set/get方法==========\n");
init();
}//初始化!
private static void init()
{
Z z=new Z();
//调用父类方法!
zf();
//调用子类方法!
zget();
zset();
zget();
}
}
//父类!
class F
{
int a=1;
void get()
{
Systemoutprintln("父类获取方法:a=>"+a);
}
void set()
{
a=10;
Systemoutprintln("父类修改方法");
}
}
//子类!
class Z extends F
{
//重写!
void get()
{
Systemoutprintln("子类获取方法:a=>"+a);
}
void set()
{
a=100;
Systemoutprintln("子类--------修改方法");
}
//调用父类,这也可以写在重写方法里面,这里为了区分就写在下面,醒目一点!
void f()
{
superget();
superset();
superget();
}
}
由于动态绑定,所以调用的是子类的A方法。如果一定要调用父类的,有这几个办法
1、:看看这个方法能否是static的?如果可以,改成static
2、 修改Child类,增加一个新方法B,B的实现为 superA()。外部调用的时候改为
Child f = new Child(); fB();
3、使用反射
以上就是关于Java 子类如何调用父类之父类的方法全部的内容,包括:Java 子类如何调用父类之父类的方法、java 怎么在子类中调用父类方法、如何重写set/get 和调用父级的set/get方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)