java中调用父类方法之super关键字的疑惑?

在java中有super和this这2个关键字,我有时候对super有一些疑惑,我甚至认为我对super和this这2个关键字还没理解!大家请看下面的代码,帮我解惑一些呗!谢谢
package com.jiongmeng;

class Father {  

    String name;  
    int age;  

    public void test() {  
        System.out.println("我是父类的test()方法");  
        System.out.println("父类姓名=" + this.name + " 父类年龄=" + this.age);  
    }  

}  

public class Son extends Father {  

    public void test() {  
        /** 
         在Son类的test()方法中的super.test();这行代码的意思是调用父类的test()方法,我对这行代码有点疑 
         惑,super代表父对象,那么很明显,就是去调用Father类中的test()方法,那么此时,在执 
         行到Father类中的test()方 
         法中的System.out.println("父类姓名=" + this.name + " 父类年龄=" + this.age);这行代码的时候,这 
         行代码中的this表示的是父对象还是子对象(我们都知道this表示的是当前对象,我就想知 
         道此时this表示的当前对象到底是父类对象还是子类对象),知道的人请帮忙解答下?谢谢! 
         */  
        super.test();  
        System.out.println("我是子类的test()方法");  
        System.out.println("子类姓名=" + this.name + " 子类年龄=" + this.age);  
    }  

    public static void main(String[] args) {  
        Son son = new Son();  
        son.name = "杨过";  
        son.age = 12;  
        son.test();  
    }  

}  

    在Son类的test()方法中的super.test();这行代码的意思是调用父类的test()方法,我对这行代码有点疑惑,super代表父对象,那么很明显,就是去调用Father类中的test()方法,那么此时,在执行到Father类中的test()方法中的System.out.println("父类姓名=" + this.name + " 父类年龄=" + this.age);这行代码的时候,这行代码中的this表示的是父对象还是子对象(我们都知道this表示的是当前对象,我就想知道此时this表示的当前对象到底是父类对象还是子类对象),知道的人请帮忙解答下?谢谢!说一下你们是怎么理解这里的super和this的,解释下原因和你们对这里的理解!

21个回答

两个层面的东西:
super是父类——类
this是当前实例(对象)——对象

当调用this的时候,当前有且仅有一个对象,这个对象的name、age等属性也只有一个值,不分子类、父类。

学再多理论知识也需要实践。你把代码跑一下就知道结果了

super可调用父类方法 this调用当前类方法

Father类中this就是Father类对象,Son类中this就是Son类对象

你的输出结果应该是:
我是父类的test()方法
父类姓名=杨过 父类年龄=12
我是子类的test()方法
子类姓名=杨过 子类年龄=12

首先题主没有搞清楚对象是什么!
对象是实例化后的类,也就是说是一个具体变量。那么this就好理解了,针对你的对象son,不管父类的this还是子类的this都是son。
super只是指定要调用父类的方法,严格来说它不是一个对象,只是一个关键字用来指定调用父类方法,其作用类似C++中的Father::test()。
你的这个例子用C++写如下:
class Father {

String name;  
int age;  

public void test() {  
   printf("我是父类的test()方法\n");  
    printf("父类姓名=%s  父类年龄=%d\n", this.name , this.age);  
}  

}
class Son:public Father {

public void test() { 

        Father::test();
   printf("我是子类的test()方法\n");  
    printf("子类姓名=%s  子类年龄=%d\n", this.name , this.age);  
}  

}

baidu_30233079
baidu_30233079 java单独搞了这样一个关键字确实能把人搞糊涂,C++里面不管是调用父类方法还是其它类静态方法都是类名+方法,ClassName::method(),这样很直观不容易混
一年多之前 回复
czh500
lay500 回复baidu_30233079: super.test();这行代码,让我想起了方法的调用必须是对象名.方法名,当然啦,静态方法是类名.方法名,所以我就理所当然的认为super.test();这行代码的super是一个对象,而且是父对象。因为调用方法是通过对象名打点,对象名点方法名!
一年多之前 回复
czh500
lay500 回复baidu_30233079: 嗯,对对对,谢谢您的指点迷津!3Q!
一年多之前 回复
baidu_30233079
baidu_30233079 你把两个东西混在一起纠结了,this是对象,super是类,这里先区分了后面的就好理解了
一年多之前 回复
czh500
lay500 回复baidu_30233079: 哈哈,Father中的test()方法中有this关键字,而super.test();这行代码,我之所以疑惑是因为我们都知道,this表示当前对象,谁调用Father类的test()方法,那Father类的test()方法中的this就指代的是谁,所以我想搞清楚super.test();这行代码中的super这个关键字指代的是哪个对象,到底是指代的是父对象还是子对象,如果指代父对象,那么Father类中的test()方法中的this就是指父对象,如果指代子对象,那么Father类中的test()方法中的this就是指子对象,所以我一开始就是在这里纠结,所以我就想复杂了,哎!还是谢谢大家的踊跃发言,把我心中的纠结和疑惑打开,多谢各位啦!
一年多之前 回复
czh500
lay500 回复baidu_30233079: 哈哈,谢谢啦,您的这2次回答言简意赅,看了之后如醍醐灌顶,一下子就豁然开朗了,哈哈,谢谢啦,看来是我自己想的太复杂了,想把super底层是怎么处理的弄明白,结果把自己绕晕了,其实有时候也没必要钻牛角尖,容易把自己搞的身心俱疲
一年多之前 回复
czh500
lay500 还有一个要说一下,super.test();这行代码,我们都知道在java中,要使用或者说要调用方法,必须是对象名.方法名进行调用,当然啦,静态方法可以使用类名.方法名调用,那么请问,super.test();这行代码,super这个关键字这里是指父对象还是仅仅是告诉编译器调用Father父类的test方法呢,如果是调用父类的test方法,那么super关键字仅仅只是指定要调用父类的方法,严格来说它不是一个对象,只是一个关键字用来指定调用父类方法,super关键字说白了就是,父类和子类中都有这个test()同名的方法,super只是为了区分到底是调父类中的test()方法还是调子类中的test()方法,仅此而已吗?
一年多之前 回复
baidu_30233079
baidu_30233079 super代表的是类,不是对象,super.test()可以理解为Father.test(),类似调用其它类的静态方法,只是对于有继承关系的子类可以调用父类的非静态方法
一年多之前 回复
baidu_30233079
baidu_30233079 super告诉编译器调用父类的方法而已,和对象无关
一年多之前 回复
czh500
lay500 谢谢,首先对象和类我搞得很清楚,我知道什么是类,什么是对象,我这里的疑惑就是,super这个关键字到底是指的是父对象还是父类呢?比如super.test();这行代码,意思是调用父类的test方法,那这里的super关键字的意思仅仅是告诉系统,调用Father类的test方法而已,还是此时super指的是一个Father父类中具体的一个父类对象呢,只是这个父类对象是隐藏的,匿名的父类对象?请问您怎么理解?谢谢,不吝赐教!
一年多之前 回复

个人理解,Fahter中的this肯定指的是Father类的对象,this可以省略。

this代表的都是当前类对象。这段代码中明细表示的是父类类对象,能通过跟代码的自己跟代码解决

super 是直接父类对象的引用是一个隐式参数。通常在构造方法里面,第一句话总是super();如果你在构造方法里面第一句不写这句话,编译器会帮你默认添加,这句话。所以无论怎样,构造器里的第一句话还是super();
this也是隐式参数,调用当前类方法。类的方法调用时,系统自动传递一个this的参数给方法。this主要在对象初始化里用的比较多,也是在构造函数里用的多。希望有用。

this关键字,无疑指的是当前对象;
super关键字,是指调用父类的方法,或者可继承的成员变量等;
再有就是,代码都在这儿摆着了,看不明白的话跑一下就明了了。
day day up!

个人认为,this关键字代表当前对象

共21条数据 1 3 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java中调用父类方法之super关键字的疑惑?
在java中有super和this这2个关键字,我有时候对super有一些疑惑,我甚至认为我对super和this这2个关键字还没理解!大家请看下面的代码,帮我解惑一些呗!谢谢package com.jiongmeng; class Father { String name; int age; public void test() { System.out.println("我是父...
子类调用父类方法(super关键字)
package testextends; public class Pad3 extends Computer3{ //子类:平板电脑 String sayhello(){ //重写父类方法‘打招呼’ return super.sayHello()+ "ipad";//调用父类方法并添加字符串 } public static void main(Strin...
Java中使用super关键字调用父类的构造方法
package four; //定义一个类 class Animals2{ public Animals2(String name){ System.out.println("我是一只"+name); } } //定义Mouse类继承Animals类 class Mouse extends Animals2{ public Mouse() { super("米奇鼠"); }...
super关键字调用父类构造方法
直接上代码 public class Card { String title; Card() { title = "新年快乐"; } Card(String s) { title = s; } public String GetTitle() { return title; } } public class Christmas exte...
java中子类对象调用父类的方法疑惑?
java子类d继承父类c,在子类d调用自己的构造方法时,会先调用父类c的构造方法,是否意味着d的对象调用类c的一般方法时,实际上是先前创造类c的对象在调用这些方法?
Java如何调用父类的父类的中的方法
1.可以用反射实现 2.可以用虚拟机级别的invokeddynamic实现(基于java1.7版本以及以上才可以) 代码如下: /** * @(#)Text4.java * * * @author * @version 1.00 2016/12/6 */ import java.lang.invoke.MethodHandle; import java.lang.inv
Java中父类方法的调用
对于已覆盖的方法来说,例如Child是Parent的子类,而且,Child和Parent都有个toString()方法,也就是说,Child覆盖Parent的toString()方法。如果child要调用Parent的toString()方法,只需要把child强制转换为Parent就可以,也就是(Parent)child.toString(),这样就是调用其父类的toString()方法。如果不
super关键字的疑惑
public class Demo8 rn void f()rn System.out.println(this.getClass().getSimpleName());rn rnrnrnpublic class Demo9 extends Demo8 rn void g()rn f();rn super.f();rn rn public static void main(String[] args) rn new Demo9().g();rn rnrnsuper.f()是调用父类的方法,新建子类实例对象的时候也会新建一个父类对象,super调用父类方法不是结果是Demo8吗,但是结果却是Demo9,望大神们点醒!
JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法
/** *ExtendsDeamo04 *继承演示04 * *重写父类的方法 *方法重写 overriding mothod * *重写父类的方法,中,调用父类的方法 */ public class ExtendsDeamo04{ public static void main(String[] args){ Women woman = new Women("妮妮");
super关键字(访问父类成员)
当子类重写父类的方法后,子类对象就无法直接访问父类被重写的方法。 为了解决这个问题,在Java中专门提供了一个super关键字来访问父类的成员,例如访问父类的成员变量、成员方法和构造方法。 class Animal{ String name=“动物”; void shout(){ System.out.println(“动物发出叫声”); } } class Dog extends Animal{...
父类调用子类方法(java)
请问,如果父类有一个空的方法,有个子类实现了这个方法,那在用这个父类对象调用此方法的时候,是不是会默认调用其子类的这个方法呢?rn参考代码如下:rnpublic class baseLayout extends LinearLayoutrnrn ... ...rn public void onUpdate() rn ... ...rnrnpublic class derivedLayout extends imiLinearLayoutrnrn ... ...rn public void onUpdate() rnmAdapter.notifyDataSetChanged();//实现了父类的onUpdate方法rnrn ... ...rnrnprivate baseLayout mBaseView;//现在有个imiLinearLayout(父类)对象rnprivate derivedLayout mDerivedView;//现在有个BuddyLinearLayout(子类)对象rnmBaseView = (baseLayout)mDerivedView;rn... ...rnmBaseView.onUpdate();//调用此父类对象的onUpdate方法rn系统是不是会默认调用其子类derivedLayout 的onUpdate方法呢?
java子类父类方法的调用
TestParent test = TestParent();test.testA();如果子类重写了父类的方法,会调用子类的方法,若未重写则调用父类的方法。package com.test; /** * @author Administrator * @date 2018/6/9 */ public class TestParent { public void testA()...
继承(概念、重写父类方法、super关键字)| final关键字
一、类的继承 继承的概念,重写父类方法,super关键字 二、final关键字
Java 中父类怎么调用子类的方法?
父类能调用子类的方法吗? 答:能。 怎么做? ● 把子类传递到父类的有参构造中,然后调用。● 使用反射的方式调用,你使用了反射还有谁不能调用的?! ● 父类调用子类的静态方法。 案例展示: package com.ywq; public class Test2{ public static void main(String[] args) { Son son = ...
关于Java中子类调用父类方法
当一个类继承于另一个类,子类中没有父类的方法时。用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找。 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。 如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。 package Temp;class A { int x = 6; private int y
关于父类的父类方法的调用
有三个类A,B,CrnA继承于B,B继承于CrnB中重写了C中的一个方法d(),rn而A要调用C中d()方法怎么调用?rn有方法调用吗?rn
如何调用父类的父类的方法
[code=C#] public class Arn rn public virtual string Foo ()rn rn return "A";rn rn rnrn public class B : Arn rn public override string Foo()rn rn return "B";rn rn rnrn public class C : Brn rn public override string Foo()rn rn return "C";rn rnrn public string Test()rn rn return base.Foo(); //这句话是调用父类。如何改为调用父类的父类rn rn [/code]rnrn调用代码:rn[code=C#] C obj = new C();rn string s= obj.Test(); //此处返回"B",目标是想让其返回"A"。rn[/code]
C#调用父类的父类的方法
rnoverride一个C#函数时,如果想调用这个函数在父类的父类中相应的方法,可以将override关键字变成new,调用时将Object转义成父类的父类rnrnclass Arnrn public virtual void Func()rn rn Console.WriteLine("A");rn rnrnrnrnclass B:Arnrn public new void Func()rn rn Console.WriteLine("B");rn rnrnrnrnclass C:Brnrn public void Func()rn rn A a = this as C;rn a.Func(); rn rnrn
关于super关键字的疑惑
class Animalrn int height=40,weight;rn void eat()rn System.out.println("animal eat");rn rn void sleep()rn System.out.println("animal sleep");rn rn void breathe()rn System.out.println("animal breathe");rn rn rn rn class Fish extends Animalrn int height=30;rn rn void breathe()rn super.height=50;rn super.breathe();rn System.out.println(super.height);rn System.out.println("fish breathe");rn rn rn class AArn public static void main(String args[])rn Animal an=new Animal();rn Fish fi=new Fish();rn //an.breathe();rn// fi.weight=30;rnrn fi.breathe();rn System.out.println(an.height);rn rn rn rn有个地方不明白了class Fish extends Animalrn int height=30;rn rn void breathe()rn super.height=50;rn super.breathe();rn System.out.println(super.height);rn System.out.println("fish breathe");rn rn 这段里面在breathe()方法里我调用父类的height并修改为50然后用super.height打印出来是50,这样我是否已经修改了父类的height变量值为50呢?在AA类里打印父类的哪个height值为40也就是没有修改,这个原因是变量生命周期问题么?在我那方法里即使调用父类的height并赋值为50但是一出breathe这个方法后就失效了?
关于隐藏父类方法的疑惑
[code=C#]rnpublic class Arn rn public void fun()rn rn Console.WriteLine("A");rn rnrn public virtual void fun2()rn rn Console.WriteLine("A 2");rn rn rnrn public class B:Arn rn public void fun()// 警告 1“ConsoleApplication1.B.fun()”隐藏了继承的成员“ConsoleApplication1.A.fun()”。如果是有意隐藏,请使用关键字 new。 rn rn Console.WriteLine("B");rn rnrn public override void fun2()rn rn //base.fun2();rn Console.WriteLine("B 2");rn rn rn class Programrn rn static void Main(string[] args)rn rn A a = new B() ;rn a.fun();rn a.fun2();rn B b = new B();rn b.fun();rn b.fun2();rn Console.Read();rn rn rn[/code]rn输出:rnArnB 2rnBrnB 2rnrn通过上面的例子,可以看出在重写方法和普通方法之间的区别,如果是重写的方法,采用哪个方法是根据实例化的对象来决定,而不跟申明的对象有关系,但在普通方法里只跟申明的对象有关,与实例化的对象无关。而在B类的普通方法中,报了一个警告,这里有一个疑惑:rn既然不用声明关键字new也是默认隐藏父类方法,那为什么还要用new声明呢,而且从例子中我们也看出,不论隐藏不隐藏父类方法,它的输出只根据声明对象有关,那这里所讲的隐藏父类方法又有什么意义?既然系统本身就自动屏蔽了父类方法,还为什么要显示声明new关键字?
怎么调用父类中的方法
public class MyBaseClassrn rn public virtual void DoSomething1()rn rn Console.Write("Base1");rn rn public virtual void DoSomething2()rn rn Console.Write("Base2");rn rn rnrn public class MyDerivedClass : MyBaseClassrn rn new public void DoSomething1()rn rn Console.Write("Derived1");rn rn public override void DoSomething2()rn rn Console.Write("Derived2");rn rn rnrnrnrn现在,创建派生类对象,怎么在派生类中调用父类中的方法
java第五课 子类 父类 super关键字 多态(进阶篇)
一、异常处理 点击这里 二、补充学习 构造方法 用来初始化一个新对象 创建对象=使用new关键字调用构造方法创建对象= 实例化一个对象 当创建对象时,自动调用 构造方法!!! ...
子类中重载父类方法时调用该父类方法
我的实验代码如下,不知道当该方法复杂时会不会引起问题,或者说这种方法会不会有缺陷:rnrnrn//base classrnclass arnrn private int type = 1;rn public int getType()rn rn return this.type;rn rnrn//subclass extends from arnclass c extends arnrn public int getType()rn rn return super.getType() + 1;rn rnrn//subclass extends from crnpublic class b extends crnrn public int getType()rn rn return super.getType() + 1;rn rnrn public static void main(String[] args)rn rn b tmp = new b();rn System.out.println(tmp.getType());rn rn//end c
子类调用父类的方法
有这样的两个类:rnrn[code=C/C++]rnclass Arnrn void fun()rn rn .............rn rn;rnrnclass B:public Arnrn void fun()rn rn ...............//在这里我想调用父类的fun()rn rn;rn[/code]rnrnHow do it??????
怎么调用父类方法
class Arnrnpublic:rnvoid methodA()rn;rnclass B : public Arnrnpublic:rnvoid methodB()rnrnmethodA();//此处报错rnA::methodA();//这样仍然报错rnsuper.methodA();//这样没试,估计也报!rnrnrn[code=C/C++]class Arnrnpublic:rnvoid methodA()rn;rnclass B : public Arnrnpublic:rnvoid methodB()rnrnmethodA();//此处报错rnA::methodA();//这样仍然报错rnsuper.methodA();//这样没试,估计也报!rnrn[/code]
python调用父类的方法
1.使用父类名字调用 class 子类(父类): def __init__(self, name): 父类.__init__(self, name) 2.使用super关键字调用 class 子类(父类): def __init__(self, name): super().__init__(name)...
子类调用父类方法
public class MainActivity extends FatherActivity { TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont...
重写、调用父类方法
所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法、 class Cat(object): def sayHello(self): print("halou-----1") class Bosi(Cat): def sayHello(self): print("halou-----2") bosi = Bosi() bosi.sayHe...
如何调用父类的方法?
是这样:rnclass1是class2的父类,class1(父类)中有一个public方法:mothod1();rn而且,同样地,class2中也有这么一个方法:mothod1();rn如果在创建了一个class2的对象时,要调用class1中的mothod1()方法,又不另外创建class1的对象。rn该如何实现呢??? 谢谢。
[00807]调用父类方法
调用父类方法一、 解决问题 在子类中调用父类的某个已经被覆盖的方法。 二、解决方案 super() 三、代码说明#!/usr/bin/env pythonclass A: def __init__(self): self.x = 0 def spam(self): print ("A.spam")class B(A): def __init_
如何调用父类的方法
abstract class A rnrn public A ()rn rn System.out.println("抽象基类的构造方法");rn rnrn public static A getInstrance()rn rn return new B();rn rnrn void doIt()rn rn System.out.println("父类的方法");rn rnrnrnclass B extends A rnrn B()rn rn System.out.println("子类的构造方法");rn rnrnrn void doIt()rn rn System.out.println("子类的方法");rn rnrnrnrnclass Crnrn public static void main(String[] args)rn rn A a = A.getInstrance();rn a.doIt();rn rnrn/*rnrn如何调用 父类的 doIt() 方法????rnrnrn*/rnrn
js跨域调用父类方法
  1.iframe中jsp写法 <input type="button" value="aaaa" onclick="test123();" /><script type="text/javascript">function test123(){ alert('iframe页面');  var js= document.createElement("scr
调用父类的变量和方法
我想调用父类里面的一个方法和变量,但是却一直没办法调用出来,[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/0.gif][/img],大家帮忙下rn其中在调用的地方我用 // rn谢谢了rn代码如下rn[code=Java]rnclass chessboard extends JPanelrn /*rn private URL blackImgURL = Gobang.class.getResource("black.gif"); rn private ImageIcon black = new ImageIcon(blackImgURL); rn private URL whiteImgURL = Gobang.class.getResource("white.gif"); rn private ImageIcon white = new ImageIcon(whiteImgURL); rn private URL currentImgURL = Gobang.class.getResource("current.gif"); rn private ImageIcon current=new ImageIcon(currentImgURL); */ rn public int i, j, k;rn rn public void paintComponent(Graphics g) rn //绘制棋盘rn super.paintComponent(g);rn g.setColor(Color.BLACK);rn for( i = 0; i < 16; i++)rn rn for( j =0; j < 16; j++)rn rn g.drawLine(50, 50 + j * 30, 500, 50 + j * 30); rn g.drawLine(50 + j * 30, 50, 50 + j * 30, 500);rn rn rn for ( i = 0; i < 16; i++)rn rn String number = Integer.toString(i); rn g.drawString(number, 46 + 30 * i, 45);rn g.drawString(number, 33, 53 + 30 * i); rn rn // updatePaint(g); rn rnrnrnclass game extends chessboardrnrn //在这里调用chessboard类的irn public int oldx, oldy;rn Image black = getToolkit().getImage("black.gif");rn Image white = getToolkit().getImage("white.gif");rn rn class XiaZi extends MouseAdapterrn rn public void mouseClicked(MouseEvent e)rn rn oldx = e.getX();rn oldy = e.getY();rn rn rn rn class game_easy extends Applet rn rn //就在这里调用chessboard的 i, 和方法paintComponentrn rn class game_secondly extends Appletrn rn rn class game_difficulty extends Appletrn rn rnrn[/code]
调用父类方法
父类有个draw()成员方法rn子类继承并重写draw()方法rnrn一个静态函数参数为父类引用,里面调用draw方法, 如何让这个静态函数只调用父类draw方法????就是c++的 base::f()这种调用
父类调用子类方法
请问,如果父类有一个空的方法,有个子类实现了这个方法,那在用这个父类对象调用此方法的时候,是不是会默认调用其子类的这个方法呢?rn参考代码如下:rnpublic class baseLayout extends LinearLayoutrnrn ... ...rn public void onUpdate() rn ... ...rnrnpublic class derivedLayout extends imiLinearLayoutrnrn ... ...rn public void onUpdate() rn mAdapter.notifyDataSetChanged();//[color=#008000]实现了父类的onUpdate方法[/color]rn rn ... ...rnrnprivate baseLayout mBaseView;//[color=#008000]现在有个imiLinearLayout(父类)对象[/color]rnprivate derivedLayout mDerivedView;//[color=#008000]现在有个BuddyLinearLayout(子类)对象[/color]rnmBaseView = (baseLayout)mDerivedView;rn... ...rnmBaseView.onUpdate();//[color=#008000]调用此父类对象的onUpdate方法[/color]rn系统是不是会默认调用其子类derivedLayout 的onUpdate方法呢?
怎样调用父类的方法?
Tparent = Class(Tobject)rnpublicrn writefile();virtual;rnend;rnTchild = class(TParent)rnpublicrn writefile();override;rnend;rn/*****************************/rnvarrn child : Tobject;rn child := TChild.create();rn child.writefile(); //调用子类的方法rn TParent(child).writefile();//应给调用父类的方法?????,但是为什么调试的时候不是这样那rn想调用 child对象想调用parent.writefile();怎么写
父类方法的调用?
子类如何调用父类的同名方法?rnclass Arnrn ... rn void __fastcall acInsertExecute(TObject *Sender); rnrnclass B : public Arnrn ...rn void __fastcall acInsertExecute(TObject *Sender); rnrn void __fastcall B::acInsertExecute(TObject *Sender); rnrn //想调用窗体A的事件:acInsertExecute,在Delphi中只要用inherited 就行了。。在CB中如何做?rn
Python 调用父类方法
____tz_zs未完 python 2.x 老式类的方法 优点:简洁。 缺点:不能很好的处理菱形继承。因为你可能会调用两次共享基类的构造函数。 class Human(object): def __init__(self, age): self.age = age print &amp;quot;Human age:%s:&amp;quot; % age class Student(...
super调用父类的方法
在子类中, super().__ init __(name,age) 或者super().run()等调用父类其他方法,都可以省略self参数 也可以避免在砖石继承中调用两次基类的方法 class baseClass: num_base_calls = 0 def call_me(self): print('calling method on Base Class'...
反射调用父类方法
/** * 类 描 述 : * 修改备注: * 创建时间:Aug 22, 2014 11:37:31 AM * 今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现 * 因为在反射看来根本不区分是否是private的,没有想到调用本 身的私有方法是可以的, * 但是调用父类的私有方法则不行,后来纠其原因很有可能是因为getDecl...
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件