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的,解释下原因和你们对这里的理解!
0

查看全部21条回答

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关键字、调用父类构造器——Java
注:本文参考《疯狂Java讲义》一书 重写父类方法 super 限定 子类调用父类构造器 重写父类方法子类扩展了父类,子类是一个特殊的父类。大部分时候,子类总是以父类为基础,额外增加新的成员变量和方法。但有一种情况例外:子类需要重写父类的方法。例如鸟类都包含了飞翔方法,其中有一种鸟是特殊鸟类——鸵鸟,因此它也会从鸟类获得飞翔方法,但这个飞翔方法明显不适合鸵鸟,所以,鸵鸟需要重写鸟类的方法。我们先看下
Super关键字和调用父类构造器
一、子类不会获得父类的构造器,但子类构造器里可以调用父类构造器初始化代码。 1.1 在一个构造器中调用另一个重载的构造器,使用this调用来完成。如下代码段:public class Component { private String name; private int age; public Component(String name) { thi
子类调用父类方法(super关键字)
package testextends; public class Pad3 extends Computer3{ //子类:平板电脑 String sayhello(){ //重写父类方法‘打招呼’ return super.sayHello()+ "ipad";//调用父类方法并添加字符串 } public static void main(Strin...
使用super关键字,构造方法
1.每个类的所有构造方法,无论重载多少个,内部的第一行永远默认是 super()  即父类的默认无参构造方法。但是如果第一行使用了this关键字调用构造方法,则没有super()。2.如果父类有多个构造方法,子类任意调用一个就可以。3.父类的构造方法不能继承,也就不存在重写。4.this() 和super() 必须在方法的第一行,否则编译错误。...
子类重写父类的方法,用super调用父类中的原方法
public class Java10_1 extends Student { public void meth() { System.out.println("我是子类"); super.meth(); } public Java10_1() { } public static void main(String args[]) { Java10_1 j
通过super调用父类属性和方法
class Person{ String name; int age; //父类的构造方法 public Person() { } public String talk() { return "i am:"+this.name+", i am "+ this.age +"years old"; }} class Student e
JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载
JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载 不墨迹,才是时间管理的最大利器,学无止境。 继承 首先我们来学习继承的概述多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。 通过extends关键字可以实现类与类的继承 格式:class 子类名 extends 父类名 {} 单独的这个类称
9.Java语言继承和抽象类,this关键字、super关键字
继承 子类和父类,把共同的属性和行为写到一个类中(父类),然后让具有该种共同属性和行为的类(子类)继承父类,从而 获得和父类相同的属性和行为(这些属性和行为不能是父类私有的,也就不能是private修饰的)。继承提高了代码的复用 性 继承的方式: 应先定义一个父类,然后子类想继承父类需要用关键词 extends来继承, 格式:class A{}     class B extend...
使用父类方法一定要用super吗
今天,在群里有人问(估计是新手)。答案,不一定。只有当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,表明这个方法时父类的方法不是子类的方法。不理解?上代码: Father类     public class Father {   public String str = "父类变量";   public String strOnly = ...
方法的调用以及用过super.的方式来调用。三种
两种方式: package point_error; public class method_use { public static void main(String[] args) { max_and_min(-1); } private static void max_and_min(int a) { if(a<0){ System.out.println("太小了"); }
子类与父类属性或方法重名时,使用super.(属性名/方法名)调用父类型属性或方法
public class Test { public static void main(String[] args) { Sub s = new Sub(); s.test(); }//main } abstract class Super{ int x,y; public Super(){ x=3; y=4; } public void test()
方法的重写与super关键字
方法重写①在子类中可以根据需要对于从基类中继承的方法进行重写。②重写方法必须和被重写方法具有相同的方法名称,参数列表和返回值类型。③方法重写不能使用被重写方法更严格的访问权限。另外 只有public和default可以修饰classsuper的小程序class FatherClass {public int A;public void f() { A = 100; System.out.print...
深入理解Java中super关键字
Java中关键字 super表示的真正对象     java中的super,大家都知道是表示一个父类的引用。上次群里见到一个网友询问 super.getClass().getName()的输出问题,大部分都知道输出的是当前这个类的类名。而不是父类的名称。关于这个问题的解释很多,基本都是说getClass()是一个final方法,说这个方法都是调用超父类Object的方法。这个解释很好,也容易
super关键字,表示对父类对象的引用
super可以显式地调用父类的带参构造方法、普通方法。 区别在于,调用构造方法必须在第一行,普通方法没有限制
从JVM内存机制理解 java 的继承 重写 多态  构造 以及this关键字和super关键字
  Java的对象是在堆空间中分配一块内存空间,对于继承来说,子类拥有父类所有权限范围内的属性和方法,但是实质上子类在分配空间时,其内存中已经分配了父类所有方法和属性的内存,包括了private在内。在内存上 子类的内存分配如下图 可以看作  子类的内存空间=父类的内存空间 +子类自己独特的内存空间   然后来看一下this关键字和super关键字 this 关键字依靠对象而存在,...
JAVA继承练习——重写父类方法与super关键字之银行利息编程例题
//bank.java--父类 public class bank{ int savedMoney; int year; double interest; double interestRate=0.29; public double computerInterest(){ interest=year*interestRate*savedMoney; return interest; } publ...
继承(包括super关键字)
一.继承的语法和基本概念 1.语法格式:class Person { public Person() { } }class Man extends Person { public Man() { } }2.类Man继承于Person类,这样一来的话,Person类称为父类(基类),Man类称为子类(派生类)。3.如果两个类存在继承关系,则子类会自动继承父类的方法和变量,
[Java]面试题、基础细节与易错点(逐步积累、扎实、查阅)
1.重载 题目: 12. 以下对重载描述错误的是(B) A) 方法重载只能发生在一个类的内部 B) 构造方法不能重载 C) 重载要求方法名相同,参数列表不同 D) 方法的返回值类型不是区分方法重载的条件 相关知识: 区分重载的方法是每个重载的方法都必须有一个独一无二的参数类型列表,甚至参数顺序的不同也足以区分两个方法。 只要编译器可以根据语境明确判断出语义,就允许某种重载。
super调用构造器和this调用构造器的区别
子类构造器中调用父类构造器使用super调用完成。 在一个构造器中调用另一个重载的构造器使用this调用完成。 super调用的是其父类的构造器,而this调用的是同一个类中重载的构造器。因此,使用super调用父类构造器也必须出现在子类构造器执行体的第一行,所以this调用和super调用不会同时出现。 子类构造器用super显式调用父类构造器时,系统根据super调用里传入的实参列表调
Java 中的super关键字
super关键字表示对某个类的父类的引用。一般而言,super有两种通用形式:第一种用来访问被子类的成员隐藏的父类成员;第二种则是可以调用父类的构造函数。接下来说一下两种使用形式的方法和规则。第一种:如子类和父类有同名的成员变量或方法,则父类的成员将会被覆盖,此时可用下面的方式来引用父类的成员:super.&amp;lt;成员变量名&amp;gt; super.&amp;lt;成员方法名&amp;gt;在Java语言中,用过继承...
Java类的继承之利用super访问父类成员
package demo; class Person2 { String name; int age; public Person2(String na,int ag) { name=na; age=ag; } void print() { System.out.println("父亲: 姓名:"+name+" 年龄:"+age); } } public class
静态方法不能使用 super 调用父类静态方法
public class SuperCalc { protected static int multily(int a, int b) { return a * b; } }public class SubCalc extends SuperCalc { public static int multiply(int a, int b) { in
Java中this和super关键字的用法
在Java中,this和super关键字比较常用,这两个关键字有许多共通的地方。this指的是当前对象,super指的是父类对象。this和super分别有两种用途,this的一种用途是引用当前对象的属性或方法;另一种是调用该类的其他构造方法。super的一种用途是引用父类的属性或方法;另一种是调用父类的构造方法。需要注意的是:static修饰的方法是没有this属性的,因为此类方法是属于类的不属...
java笔试题01
一. 选择题(共50题,每题2分,共100分。多选题选不全或选错都不得分。) 1. 以下属于面向对象的特征的是(C,D)。(两项) A) 重载 B) 重写 C) 封装 D) 继承 2. 以下代码运行输出是(C) public class Person{ private String name=”Person”; int age=0; } public class Chil
Java继承,子类默认在构造函数中用super()调用父类构造函数
1.子类继承父类的方法属性,并重写父类的方法,子类修饰符不能比父类方法的修饰符的范围狭窄。 Protect 与 默认 区别: protected :成员 本类和子类可以访问。【其他类不可以使用(即使同一个包中)】 Frinedly(友好/默认):成员 本类和子类,同包可以访问【其他类可以使用】 继承中的构造方法的执行顺序:父类有构造函数,子类也写构造方法的时候必须显示的调用父类的构造方
super关键字主要有以下两种用途
super关键字主要有以下两种用途。  1.调用父类的构造方法  子类可以调用由父类声明的构造方法。但是必须在子类的构造方法中使用super关键字来调用。其具体的语法格式如下:  super([参数列表]);  如果父类的构造方法中包括参数,则参数列表为必选项,用于指定父类构造方法的入口参数。  下面将以5.4.3节介绍的实例为例介绍如何在子类中调用父类的构造方
【Java 5班第2次考试】
Java 5班第2次考试 一、选择题(每题1分 共15分) 1、关于继承的说法正确的是( A ) A)子类将继承父类所有的属性和方法 B)子类将继承父类的非私有属性和方法 C)子类只继承父类public方法和属性 D)子类只继承父类的方法,而不继承属性   2、重写与重载的关系是( A ) A)重写只有发生在父类与子类之间,而重载可以发生在同一个类中 B)重写方法可以不同名,而
Java super关键字用法
分别介绍了在构造方法和非构造方法中super关键字的四种不同的用法。
Java 子类调用父类构造函数----super()详解
Java 子类调用父类构造函数----super()详解
Java中父类和子类中的方法调用和参数传递探讨
有这样一段程序,看看它会输出什么结果public class Test { public static void main(String [] args){ System.out.println(new B().getValue()); } static class A{ protected int value;
Java中的继承、方法覆盖(方法重写)、super关键字、多态
Java继承 继承 继承是面向对象的一个重要的特性,它体现了类与类之间的一些逻辑关系,目的是为了代码复用(以减少开发成本)。当多个类之间有一些共同的属性(成员变量)和功能(成员方法)时,我们可以将他们共同的部分拿出来作为一个父类定义实现这些共性,这些类中可以不再定义这些共性而直接继承父类,得到这些属性和功能。 继承体现了客观事物中事物的层次关系。在Java程序中支持单继承(任何一个子类都只能有...
关于子类构造方法中super关键字的使用记录
java中,父类中有无参构造方法,子类中可以构建构造方法而无需添加super,如果父类中没有无参构造方法,那么子类中就必须构建父类中有的构造方法(需遵循先构造父类,再构造子类),并且相应的有参构造方法的第一行就得有super(x,y...),不然会编译错误,有无参构造方法,子类中的有参构造方法就可以不加super(x,y...)。如下, 类Animal 添加  public Animal() {...
super关键字和函数覆盖(Override)
4.3 super关键字(1)super:代表的是父类,用法和this相似。可以使用super调用父类中构造方法,成员变量与成员方法。例如:super.age=10;其中age是父类中的变量。 (2)this代表本类对象的引用,即父类的内存空间的标识,super代表父类所属的空间。 (3)当子父类出现同名成员时,可以用super进行区分。 (4)子类要调用父类构造函数时,可以使用super语句
一个子类要调用父类的方法时,默认是使用this还是super?
因为子类已经继承了父类的所有方法,子类也未去重写这些方法,这些方法实际上已经属于子类,那么使用时,如果我们不写this或super,类也不报错;使用this或super也正确。那我们什么也不写的那种情况到底默认是哪个? 看看下面的代码 package com.java.three; public class Father { public void printTheInfoma
为什么java的子类中必须调用父类的构造方法
子类继承父类的字段和方法。 你想那么子类中从父类继承的字段,要谁来初始化呢? 父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。 设计者,可能是这么考虑的。 再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。 java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。 所以说,为了那个内置的父类对象,也
es6 super关键字
super关键字 super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。 class A {}class B extends A { constructor() { super(); }} 上面代码中,子类B
java的子类中必须书写super()?
java的子类中必须书写super()? 答案是否。 java的子类初始化肯定是先执行父类构造,然后是子类构造 而super()函数是当子类要通过父类的含参构造方法进行初始化时使用...
super关键字,super关键字和this关键字的区别
super关键字: 使用super可以调用父类的成分:父类的成员变量、父类的方法、父类的构造方法。 注意:使用super关键字和this关键字,均不能用在静态方法中,只能用在普通方法(实例方法)中。 访问属性: 示例: 父类 public class FatherClass{ public int age=18; } 子类 public c
Java基础——super关键字
super关键字的概念 super不是引用类型,存储的不是内存地址,指向不是父类对象 super代表的市当前子类对象中的父类型特征 super什么时候用? 子类和父类都有某个数据 在子类中访问父类属性时 super可以用在什么地方? 可以用在成员方法中,不能用在静态方法中 可以用在构造方法中 super();用在构造方法中        语法:super(实参); 如果第一行没有s...
文章热词 Java Java教程 Java价格 Java视频教程 Java课程
相关热词 c# 调用父类方法 c#怎么调用父类方法 c#显示调用父类方法 java程序员学习python java区块链教程