Java中子类实例可以调用父类方法吗 20C

通常情况子类覆写父类方法
如果是构造函数,直接用super()
如果是普通方法用super.method()

但是如果创建了子类实例,比如A类中覆写了Object的equals()方法
A a = new A();
a怎么调用Object的equals()方法

A没有显示继承其他类

10个回答

就像你说的,可以在A类的equals方法中通过super来调用object类中的equals方法。

这样并没有什么意义呀,,还是不要钻牛角尖了吧

ultramanleoking
止戈uuu 这么早的评论,,那时候倩雯还在,哎,想你
4 个月之前 回复

因为你A类中重写了equals方法了,所以你就调用不到Object的equals方法了。
但是,话说回来,Object的equals方法是最基本的,你A类要重写equals方法的话,必须也重写hashCode方法,需要保证equals相同的对象一定有相同的hashCode值。
所以,最好用Eclipse自带的重写equals方法,自动生成以保证这个约定的成立。

实在需要的话,你可以实例一个父类,用父类来调用重写的方法,这个方法比用反射直观些。

你重写了equals方法,那你A类调用的肯定就是重写的方法了。但要是你一定要调用object里的方法,可以在把equals重载一下。

既然要覆写了方法,还要调用,不是矛盾吗

首先,覆写是什么意思你肯定知道,子类的把父类的给覆盖掉了。子类拥有的方法域是子类的方法域与父类中可见的方法域的并集,如有重复,则保留子类中的此方法。至于a怎么调用Object的equals()方法,可以使用反射,相当于直接生成一个Object的实例,只不过下面的代码看似和A有什么关系,其实没什么关系:

 public class A{
    public static void main(String[] args) throws Exception{
        A a = new A();
        a.equals(args);
        Method objectEquals = A.class.getSuperclass().getDeclaredMethod("equals", Object.class);
        System.out.println(objectEquals.invoke("A", "A"));
    }
    @Override
    public boolean equals(Object obj) {
        System.out.println("A.equals");
        return false;
    }
}

你直接a.equals()不就可以么,要重写就在A类里面重写equals就行了

子类只能调用这个覆盖的方法 equals()

(覆盖的意思:就是将父类的覆盖掉了,子类对象调用该方法,只能是重写的覆盖方法,父类对象可以调用原来的equals())

土豪的世界我们不能理解,重写equals()方法后new的又是A的对象,无论怎么样都调用不了父类的equals()了,如果想调要么你删掉重写的equals()方法,要么new一个Object对象啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java 中父类怎么调用子类的方法?
Java中父类可以调用子类方法吗?
父类方法中使用this,那么这个this指的是谁?
一直在用一些东西,却总是感觉有一些疑惑,今天发现了自己一个及其致命的意识错误。关于父类中this关键字到底是谁的问题。请看代码 父类Parent public class Parent { public Parent(){ System.out.println("父类自己---->"+this); } public void onCreate(){ System.out.prin
JAVA基础 -从父类的引用如何调用子类中独有的方法
首先放上源文件 父类  Animal.java package com.imooc; public class Animal {     public void eat(){            //注意这个eat方法      System.out.println("动物具有吃的能力");     } } 子类  Dog.java package com.im
【java】Java 中父类怎么调用子类的方法?
原文地址:http://blog.csdn.net/qq_25827845/article/details/52916513 父类能调用子类的方法吗? 答:能。   怎么做? ● 把子类传递到父类的有参构造中,然后调用。 ● 使用反射的方式调用,你使用了反射还有谁不能调用的?! ● 父类调用子类的静态方法。 package study; /** * Cr
父类的引用指向子类的对象怎么调用子类的方法
多态。 如果说父类中有这个属性跟方法,子类有重写过,那么调用的是子类中的属性跟方法。 如果父类中没有这个属性跟方法,那么子类调用就会出错。 如果父类有这个属性跟方法,而子类没有,则调用的是父类的属性跟方法。
父类对象可以调用子类中的方法吗?
1.新建一个子类对象时,它首先执行它父类的构造方法然后再执行子类的构造方法。 2.我们new一个子类对象赋给父类(父类的引用指向了子类的对象,也就是说java里说的多态,),父类对象不可以调用子类的方法,但如果子类重写了父类的某个方法,则此时父类调用的是子类方法的内容。
关于java中父类引用子类实例化的问题
相信很多人,对于这个问题多多少少会有些疑惑,也可能曾经纠结过,我也上网查找了一些资料,看到知乎上一个人的解释倒是生动形象, 网址链接:http://www.zhihu.com/question/20627883 以下为摘录: ———————————————————————————————————————————————————————————————————————— 有一次平原君说:「我
Java 子类方法的父类方法相互调用
class A{ public void fun1(){ System.out.println("a:fun1"); this.fun2(); } /** * a:fun1 * a:fun2 */ private void fun2(){ System.out.println("a:fun2"
Java父类对象调用子类实体:方法重写与动态调用
众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例子 class Father{ public void announce(){ System.out.println("Father"); } } class Chi
(多态)子类实例赋给父类引用的简单例子
注意(子类实例赋给父类引用): 父类引用不能调用子类中特定方法; 父类引用调用的是子类重写或实现父类的方法,引用变量是子类对象的地址。 创建一个抽象类Teacher,包括name属性和TeachClass()方法; public abstract class Teacher { /** *name:老师姓名,字符类型 *TeachClass:老师讲课,继承多态...
子类的对象调用父类的方法
class Fruit { String color = "未确定颜色"; //定义一个方法,该方法返回调用该方法的实例 public Fruit getThis() { return this; } public void info() { System.out.println("Fruit方法"); } } public class Apple extends Fru
关于Java中子类调用父类方法
当一个类继承于另一个类,子类中没有父类的方法时。用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找。 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。 如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。 package Temp;class A { int x = 6; private int y
Java反射:通过父类对象调用子类方法
通常情况下在父类中不能直接调用子类中的方法(重写的除外),但是在某些特殊的情况下,需要根据一个父类的对象来调用子类的方法,原理就使用java的反射原理。例如:Person类,有一个name属性 public class Person {    private String name; ​    public String getName() {        return name;
子类引用父类的方法,既可以用子类的实例取引用。也可以用子类的类名称去应用,子类不创建实例,用子类的类名引用也可以。。
。。。。。
子类调用父类方法(super关键字)
package testextends; public class Pad3 extends Computer3{ //子类:平板电脑 String sayhello(){ //重写父类方法‘打招呼’ return super.sayHello()+ "ipad";//调用父类方法并添加字符串 } public static void main(Strin...
java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
众所周知,java中this关键字指的是当前调用对象,一般使用方法不在此阐述public class HelloA { public static void main(String[] args) { new B().print(); } } class B extends A{ private String s = "B" ; public void pri
java中实例化子类时会不会调用父类的构造方法?
子类不会继承父类的构造方法(这里说的不能继承是说,构造方法不能在子类中被覆写,有时候说的“继承”父类的构造方法是说子类的构造方法调用父类的构造方法。),但是子类在实例化对象时:如果子类的构造器没有显示的调用超类的方法,则将自动调用超类默认构造器(子类构造器中默认是有super()的(可以使用super(参数)调用有参构造),所以会调用父类构造方法,如果是this()就不会调用了,他们两个不能同时存
为什么子类中不能访问另一个包中父类中的protected方法?
##表面理解 为什么子类中不能访问另一个包中父类中的protected方法? 一般我们问这个这个问题呢,其实是没有明白protected权限到底controll了什么,都知道protected修饰的成员变量和方法可以被包外的子类访问到,这里被包外子类访问实质并不是可以在子类中通过创建父类对象来访问这个protected方法, 而是可以通过创建子类对象来访问的。这也可以说是protected权
C#里的父类对象引用子类实例的理解
面向对象的多态  //父类可以引用子类对象。             //父类引用只能调用子类继承父类的方法,父类引用不能调用子类独有的方法。             People newPeople = new Man("Bilu");//如在“人类”类中引用一个 “男人”实例           //子类引用不能直接赋值父类对象,除非将父类对象进行强制转换
JAVA final 、super 关键字以及继承关系中父类与子类实例变量初始化的 理解
1,final 修饰符修饰变量、方法、类 时有什么作用? ①final 修饰变量:该变量被赋初值后,不能对它重新赋值 ②final 修饰方法:此方法不能重写,即父类中某方法被final修饰,在子类中将不能定义一个与父类final 方法同名且有相同方法标识符(参数个数也相同,返回值类型相同)的方法 ③final 修饰类:此类不能再派生子类 ④final 修饰的实例变量在使用前必须显示地初始化
java父类构造函数调用子类覆盖方法
原文链接:http://blog.csdn.net/zhuoaiyiran/article/details/19489745 参考:http://blog.csdn.net/bettarwang/article/details/26160183 1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上
关于子类和父类中的this的用法
在看毕向东java视频的时候,多态这一章讲到了一段代码: public class Demo { public static void main(String[] args) { Fu f = new Zi(); f.show(); } } class Fu { int num = 1; void show() { System.out.println(this.num)
使用父类方法一定要用super吗(写给新人)
今天,在群里有人问(估计是新手)。答案,不一定。只有当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,表明这个方法时父类的方法不是子类的方法。不理解?上代码: Father类 public class Father { public String str = "父类变量"; public String strOnly = "父类变量,子类没有同名变量";
子类能否访问或覆盖父类的private方法
http://bettereveryday.iteye.com/blog/591771 private关键字的定义是“除了包含该成员的类之外,其他任何类都无法访问这个成员.”,也就是说只有自己才能直接访问到private成员,其他任何类,包括子类都无法访问到这个成员。   我们可以来测试一下: 定义两个类,Parent类和Child类 Parent类中有两个方法,一个public方法,一
父类方法中使用的this,那么这个this指的是谁?
一直在用一些东西,却总是感觉有一些疑惑,今天发现了自己一个及其致命的意识错误。关于父类中this关键字到底是谁的问题。请看代码 父类Parent [java] view plain copy   public class Parent {       public Parent(){           System.out.printl
多态的执行究竟是父类的还是子类的?
首先Java实现多态有三个必要条件:继承、重写、向上转型。          继承:在多态中必须存在有继承关系的子类和父类。          重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。          向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。 然后就是多态中的执行问题了,我们可以用一句话来
实例化一个子类对象赋给父类对象引用或一个实现了接口的类的对象赋给接口的引用的好处
这是多态的一种应用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果。比如从某个基类继承出多个对象,其基类有一个虚方法Tdoit,然后其子类也有这个方
java中的继承(子类调用父类构造方法还不懂)
declarations  n. 声明extends  v. 继承继承中注意的问题:1  重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;            重写方法不能使用比被重写方法更严格的访问权限。重写是类与类之间的关系,两者必须是继承关系。重载是方法与方法之间的关系。2  关键字super:    在
python中子类实例化调用父类方法
面向对象的核心为对象,对象是由类实例化而来的
Java学习笔记——子类调用父类属性方法
父类引用指向子类对象: 父类对象: public class Father { public void dance(){ System.out.println("我们爱跳交谊舞!"); } } 子类对象: public class Son extends Father{ public void dance(){ System.out.pri
子类是否可以重载父类的方法?重载可以发生在子类中吗?
一、争议 这是网上经常被提起的两个问题,有的说不可以,理由重载是同一类中,方法名相同,参数列表不同的一组方法的定义。 但是认为可以的理由是子类可以继承父类所有的公有方法(构造器方法除外),然后在子类中定义与继承方法同名不同参数列表的方法,这也叫重载。 二、个人理解 感觉第一个问题本身的问法就存在问题。没有这一说。 重载可以发生在子类中吗?我同意 “重载是同一类中,方法名相同,参数列表不...
JAVA中子类是否可以可以继承、重写父类的静态方法--总结
JAVA中子类是否可以可以继承、重写父类的静态方法–总结今天刷题的时候看到一个问题:JAVA中子类是否可以可以继承父类的静态方法,自己实验了一下,也找了找别人的看法,总结一下吧: 子类可以继承父类的静态方法,意思是可以调用,但前提是父类此方法对子类可见 最重要的一点,一个类中的static修饰的变量或者方法,都默认的会加上final关键字,大家都知道加上final关键字是肯定不能重写的,所以静态方法
子类实例化是否会实例化父类?不会
关于对java中Class,AbstractClass,Interface的理解  首先关于类,我们可以把它当成一个瓶子模具,这里的模具只是用它的概念,不需要带入真正的模具(因为瓶子没有模具),当我们在 java中使用new来新建一个对象bottle时,可以想象成用这个模具去造了一个新瓶子,这个新瓶子是纯粹一个瓶子,什么花 纹都没有,我们当成这个就是这个bottle的属性的初始值,然后我们开始对
子类覆盖掉父类的同步方法
1、如果父类中的某个方法使用了synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上synchronized关键字才可。 2、当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了
java中子类调用父类的构造方法
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?    答案如下:      当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方
子类调用父类方法时用super和this的区别所在
基础不扎实的朋友应该会有一个疑问,当super和this都可以用的时候,到底我们是用super调用父类方法还是用this呢?这里其实是分两种情况的:当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,表明这个方法时父类的方法不是子类的方法。上代码:Father类[java] view plain copypublic class Father {            publi...
关于子类无法访问父类protected属性和方法的问题
package com; public class A {   protected int count; } ------------------------ package net; import com.A; public class B extends A{    public static void main(String[] args)  {   B b = new
Java中子类是否可以继承父类的static变量和方法而呈现多态特性
静态方法通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法。 它们只能访问static数据。 它们不能以任何方式引用this 或super。 无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个
通过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父类调用被子类重写的方法
父类: public class Father { public void doing(){ talking(); } public void talking(){ System.out.println("father is talking!"); } } 子类: public class Son extends F...
在Java中子类能否重载父类的构造方法?
1,首先明确一点子类不能重载父类的构造方法 2,由于在java中类的构造函数与类的名称相同,不可能子类和父类使用相同的类名称,因此子类也就不能重载父类的构造函数,但子类可以通过super来调用父类的构造函数。 3,也就是在子类的构造方法里面使用 super() 的方法来调用父类; package javaClass; /* * 编写一个java程序,设计一个汽车类Vehicle
子父类方法调用关系,内部类总结
public class Privateoverride { private void f() { System.out.println("private f()"); } public static main(String[] args) { PrivateOverride po = new Derived(); po.f(); } } class Derived
子类可以直接使用父类的变量、方法吗?
今天通过看嘉扬哥的代码 发现一个一直没注意到的问题:      子类可以直接使用父类的变量吗?     答案 :可以 (只能是 protected  public 修饰的  成员变量)。     子类继承父类后 在方法里面可以直接使用父类的变量。  方法类似     注意:如果不是父类的成员变量就无法获取到。 做了个小实验: 父类:Parent
java中子类是否可以访问父类的私有属性
首先子类是无法继承父类的私有属性,也无法直接访问父类的私有属性。但如果父类中有对私有属性的get和set的方法,而且是public的修饰的方法,子类在继承父类的同时,也继承了带有public修饰的set和get方法,所以可以通过以下方式子类可以访问到父类的私有属性。package test; class Person{ private String name; public Integer ...
Java反射通过父类对象调用子类的方法
在做网站开发的时候我们都会写一个控制器,控制器的作用就是接收客户端的请求,有时候为了控制访问入口的唯一性,方便我们监控用户访问的数据;最近在抽时间写一个底层转发控制器请求的工具,说通俗一点就是首先我定义一个抽象类或者接口A(实现类A就标识为控制器),然后定义很多继承或者实现了A类的类B(用户真正的Controller); 1.定义一个抽象类作为所有控制器的父类 package thread; ...
父类中的private方法会被子类继承吗????可以访问吗????
肯定是被继承的 但是 子类无法访问父类的私有属性或方法。。。。
子类对象调用父类方法包含子类覆盖的方法
如果A类中的fa和B类中的fb命名相同,均为f,则在B类对象调用f方法时,会出现逻辑错误,因为调用super.f(a,b)后,父类方法中return f(a,b%a);调用的将不是父类中自身的方法,而是子类中被覆盖的方法。子类类型对象调用子类覆盖父类的方法,默认使用子类的方法;使用super,可调用父类被覆盖的方法,若父类的方法中有被子类覆盖的方法,则该方法的逻辑为子类方法的逻辑;个人建议:如无特别
java中关于子类实例化时调用父类无参构造方法的问题
java中子类在实例化的时候调用父类的无参构造方法容易混淆的大致分以下几种情况: 1、子类和父类同时具有有参和无参的构造方法,子类有参构造方法中第一行写的有super.(xx),且子类实例化时用的是有参构造方法,那么此时不会先调用父类的无参构造方法,而是直接调用子类的有参构造方法; 2、子类和父类同时具有有参和无参的构造方法,子类有参构造方法中第一行写的没有super.(xx),且子类
子类实现父类的抽象方法,父类调用抽象方法
首先,父类有一个抽象方法,并且在自身的其他方法中调用了 public abstract class Baba { public abstract void say(String a); public void dosomething(String a){ say(a); } } 父类 baba,有一个say抽象方法,没有实现,并且在dosomething中调用了。如果
Java中子类继承了父类的私有属性及方法吗?
最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问