c++与java中子类中调用父类成员的方法

java中:
import java.util.Scanner;
public class ClassTest{
   public static void main(String args[]){
      child ch=new child(2);
      parent p=ch;
      p.print();
      //p.print2();//调用错误,父类中没有改成员方法,该方法只属于子类!
   }
} 

class parent{
   int xx;
   parent(int x){
      xx=x;
   }
   void print(){
      System.out.println("this is parent!");
   }
   int f(){
      int n;
      Scanner s=new Scanner(System.in);
      n=s.nextInt();
      return n;
   }
}

class child extends parent{
   int xx;
   void print(){
      System.out.println("this is child!");
      System.out.println("父类中的f()函数得到的值:" + super.f());//当然也可以通过super来区分子类与父类同名函数的方法
      System.out.println("子类中的f()函数得到的值:" + f());
   }
   void print2(){
      System.out.println("this is test!");
   }
   child(int x){
      super(x);//调用父类的构造方法
      xx=5;
   }
   int f(){
      System.out.println("父类中的xx值:" + super.xx);//通过super.xxx可以区分子类与父类同名的变量
      System.out.println("子类中的xx值:" + xx);
      return 15;
   }
}
c++中:
#include<iostream>
using namespace std;
class parent
{
public:
   int p;
   parent(int x)
   {
       p=x;
   }
   void print()
   {
      cout<<"this is parent" <<endl;
   }
   int f()
   {
    return 11;
   }
}; 

class child : public parent
{
public:
   int p;
   child(int x):parent(x)
   {
       p=15;
   }
   int f()
   {
      return 22;
   }
   void print()
   {
       cout<<"this is child!" <<endl;
       cout<<"父类中的 p 变量值:"<<parent::p<<endl;
       cout<<"子类中的 p 变量值:"<<p<<endl; 

       cout<<"父类中的f()函数值:"<<parent::f()<<endl;
       cout<<"子类中的f()函数值:"<<f()<<endl;
   }
   void print2()
   {
      cout<<"this is test!" <<endl;
   }
};

int main()
{
   child ch(2);
   ch.print();
   return 0;
}
时间: 2024-11-01 05:24:26

c++与java中子类中调用父类成员的方法的相关文章

Python中子类怎样调用父类方法

python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类,就要在这个函数里显式调用一下父类的__init__(),这跟C++,jAVA不一样,他们是自动调用父类初始化函数的. 调用父类函数有以下方法: class A: def method(self, arg): pass class B(A): def method(self, arg): # A.me

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

重写-JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法?

问题描述 JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法? JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法? 解决方案 使用super.methodName();调用. Java中super关键字指代的是父类. this关键字指代的是自身. 解决方案二: 用super.方法名调用 解决方案三: 试试super.xxx 解决方案四: 直接用super.方法名调用对应的方法

php面向对象中子类中重载父类详解

因为在PHP中不能存在同名的函数,所以在同一个类中也就不能定义重名的方法.这里所说的重载是指在    子类中可以定义和父类同名的方法从而覆盖从父类中继承过来的方法. 子类中重载父类的方法  代码如下 复制代码 <?php       class Person{                                                                           public $name;                                

python中关于super调用父类构造方法

问题描述 python中关于super调用父类构造方法 class Person: def init(self,n,s): self.name=n self.sex=s print "Person" class Student(Person): def init(self,n,s,j): self.job=j print "test" super(Person,self).__init__(n,s) print "Student" s=Stude

java-代码中子类在调用重名方法时返回结果为null,究竟调用过程是怎样的?

问题描述 代码中子类在调用重名方法时返回结果为null,究竟调用过程是怎样的? class father { private String name; father(String name) { this.name=name; } public String get_name() { return this.name; } } class son extends father { private String name; son(String name) { super(name); } pub

为什么子类能够间接调用父类的私有方法

问题描述 子类的对象是不能直接调用父类的私有方法,但是却可以间接调用,求大家解答!代码如下classFather{publicFather(){System.out.println("Father");}privatevoidhello(){System.out.println("hello");}publicvoidsayHello(){System.out.println(thisinstanceofSon);this.hello();}}publicclass

java-安卓开发为何我点中EditText会调用BaseAdapter的getView方法

问题描述 安卓开发为何我点中EditText会调用BaseAdapter的getView方法 public class MainActivity extends Activity { List list=new ArrayList(); String date; ListView lv=null; MessageAdapter ma=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreat

【java】子类可以通过调用父类的public方法调用父类的private方法,为什么?

代码1:   打印结果:   代码2:   运行结果:     问题: 代码1中super是父类自己调用自己的add()方法,并在add()方法中调用了私有的del()方法,那为什么打印出来的this是子类? 代码2中this是子类去调用了父类继承下来的add()方法,但是为什么还能在add()方法中调用到父类的私有的del()方法?   谁能解释为什么? 欢迎留言.不要说废话! 看懂问题再来讨论为什么!!!!!!