精华内容
下载资源
问答
  • java子类调用父类的方法中包含子类重写的实例方法# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了# 先看代码:public class Common {public static void main(String[] args) {Sub sub = new Sub();...

    java子类调用父类的方法中包含子类重写的实例方法

    # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了

    # 先看代码:

    public class Common {

    public static void main(String[] args) {

    Sub sub = new Sub();

    sub.testSub();

    }

    }

    class Parent {

    protected boolean test() {

    throw new RuntimeException();

    }

    protected void testParent() {

    if (test()) {

    System.out.println(this.getClass().getName());

    }

    }

    }

    class Sub extends Parent {

    public void testSub() {

    super.testParent();

    }

    @Override

    public boolean test() {

    return true;

    }

    }

    # 上面的代码的输出结果是:

    com.qq.demo.common.Sub

    # 大致流程是 main 中调用子类的 testSub()方法 -- testSub()方法中调用父类的testParent() 方法 -- testParent() 方法调用test()方法;需要注意的是test()方法在父类和子类中都存在,子类重写了父类的test()方法;

    以上就是本次介绍的全部知识点内容,感谢大家的阅读和对我们的支持。

    时间: 2019-09-11

    父类能调用子类的方法吗? 答:能. 怎么做? 把子类传递到父类的有参构造中,然后调用. 使用反射的方式调用,你使用了反射还有谁不能调用的?! 父类调用子类的静态方法. 案例展示: package com.ywq; public class Test2{ public static void main(String[] args) { Son son = new Son(); Father father=new Father(son); father.fun1(); father.fun4();

    本文实例讲述了Java序列化中子类.父类构造函数问题.分享给大家供大家参考,具体如下: 一 介绍 1.如果父类实现了序列化接口,子类就不需要实现序列化接口. 2.创建对象的时候,递归调用了父类的构造函数. 3.对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用,否则不会被调用. 二 实例 package com.imooc.io; import java.io.FileInputStream; import java.io.FileOutputStream;

    前言 "Java 和 C++ 中子类对父类函数覆盖的可访问性缩小的问题"的题目看起来比较学术化,但的确是一个容易忽视的问题.本文力求详细阐述这一问题在 Java 以及 C++ 中的区别. 先介绍什么是"子类对父类函数覆盖的可访问性缩小".对于继承而言,子类可以覆盖父类的"虚函数"--尽管 Java 中没有虚函数这一术语,但可以把 Java 的所有函数都看作虚函数,因为 Java 的所有函数都可以被子类覆盖.这里仅借用"虚函数"

    6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

    编写程序实现比萨制作.需求说明编写程序,接收用户输入的信息,选择需要制作的比萨.可供选择的比萨有:培根比萨和海鲜比萨. 实现思路及关键代码 1)分析培根比萨和海鲜比萨 2)定义比萨类 3)属性:名称.价格.大小 4)方法:展示 5)定义培根比萨和海鲜比萨继承自比萨类 6)定义比萨工厂类,根据输入信息产生具体的比萨对象 Pizza.java package zuoye; import java.util.Scanner; //父类 public class Pizza { String name;

    Java中子类覆盖父类方法抛出异常不能比父类多,这个表述不够准确. 准确一点的描述为: 子类抛出的异常类型不能比父类抛出的异常类型更宽泛.假设父类抛出异常ParentException,另外有两个子类继承自ParentException分别为ChildException1, ChildException2, 那么 子类可以同时抛出异常ChildException1,ChildException2. 满足"子类抛出的异常类型不能比父类抛出的异常类型更宽泛",这一条件. 注意: 子类也可以

    854e1ff0f92a518b4cfd4c43b6d5dfaa.png

    子类重新实现父类的方法称重写:重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改:仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类:要么就不修改,与父类返回值类型相同.那么,该如何理解呢?为什么要是父类返回值类型的子类? 提出问题:子类必须重写父类所有方法吗? Java,子类不是必须重写父类所有方法的,分为以下两种情况: 父类方法为抽象方法时,子类必须重写(实现)所有父类的抽象方法: 父类方法为普通方法时,子类可以重写父类方法,也可以不重写

    重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的 覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同 两同两小一大  注意:子类实例方法不能覆盖父类的

    我们首先看代码: Class c = ArrayList.class; c.isPrimitive(); //判断c是否为基本数据类型 c.isAssignableFrom(List.class); //判断c是否是List类的子类或父类 c.getGenericType(); //得到泛型类型 实例:通过反射得到List 集合中的泛型类型 package com.zf.target; import java.lang.reflect.Field; import java.lang.re

    异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误: 它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务).

    在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下:    当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以: 第一个规则:子类的构造过程中,必须调用其父类的构造方

    说到java中的重载和覆盖呢,大家都很熟悉了吧,但是呢我今天就要写这个. 本文主题: 一.什么是重载 二.什么是覆盖 三.两者之间的区别 重载(overload): 在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了. 即当函数同名时,只看参数列表.和返回值类型没关系. 重载使用的时候需要注意: 1.在使用重载时只能通过不同的参数样式.例如,不同的参数类型,不同的参数个数,不同的参数顺序. 2.方法的异常类型和数目不会对重载造成影响

    方法的覆盖 在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类中的相同,那么,新方法被称做覆盖旧方法. 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同. 被覆盖的方法在子类中只能通过super调用. 注意:覆盖不会删除父类中的方法,而是对子类的实例隐藏,暂时不使用. 请看下面的例子: public c

    在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载.单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法重写. 子类中重载父类的方法就是在子类中覆盖从父类中继承过来的方法,父类中的方法被子类继承过来不就可以直接使用吗?为什么还要重载呢?因为有一些情况我们必须要覆盖的.例如,有一个"鸟"类,在这个类中定义了鸟的通用方法"飞翔".将"鸵鸟"类作为它的子类,

    展开全文
  • 展开全部先小小纠正一下,java里面一般不叫函数,叫方法,这是Java的一个小习惯。32313133353236313431303231363533e78988e69d8331333365643662你这个问题原因很简单。首先,任何类都有构造方法,难怕是你不写,也会...

    展开全部

    先小小纠正一下,java里面一般不叫函数,叫方法,这是Java的一个小习惯。32313133353236313431303231363533e78988e69d8331333365643662

    你这个问题原因很简单。

    首先,任何类都有构造方法,难怕是你不写,也会默认你有一个有无参构造方法。,所以你的A里面就会有一个叫A()的构造方法。

    当你new A()时,默认你有一个有无参构造方法A()的方法里的第一句,会自动加上一个super();的方法,这句就是调用父类构造方法的意思,这是java规定的规则。

    你可以尝试一下,在A里写一个构造方法:

    A(){

    super();   //这个一定要放在第一句

    System.out..XX;

    }

    这与你不写super()这句效果是一样的,因如果没写,java会默认在第一句加上super。

    1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;

    2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;

    3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;

    4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;

    5.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)

    6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。[1]

    7.在Python中构造函数必须通过重写__init__方法实现

    展开全文
  • 如题,子类Print 方法调用父类的 see方法,父类的see方法调用 父类和子类共有的方法(即父类的Show方法,以及子类重写后的Show方法),请问最后返回的是哪个结果。 测试 parent 类 public class Parent { public ...

    如题,子类Print 方法调用父类的 see方法,父类的see方法调用 父类和子类共有的方法(即父类的Show方法,以及子类重写后的Show方法),请问最后返回的是哪个结果。

    测试

    parent 类

    public class Parent {
        public String Show(){
            return "there is parent show";
        }
    
        public String see(){
            return Show();
        }
    
    }
    

    child 类

    public class Child extends Parent{
        @Override
        public String Show(){
            return "there is child show";
        }
    
        public String Print(){
            return super.see();
        }
    }
    

    Test 类

    public class Test {
        public static void main(String[] args) {
            Child child=new Child();
            System.out.println(child.Print());
        }
    }
    

    运行结果

    在这里插入图片描述

    问题产生的地方。

    org.apache.catalina.core internalDoFilter 方法
    在这里插入图片描述
    这里调用父类 父类 FrameworkServletservice 方法,之后又调用 父类 HttpServletservice 方法,我测试的时候用post方法,此时进入了如下界面
    在这里插入图片描述
    跟踪测试的时候发现没有进入该类的doPost方法中,而是进入了子类的doPost方法,顾有此疑问。

    展开全文
  • 在创建子类的对象时,jvm会首先执行父类的构造方法,然后再执行子类的构造方法,如果是多级继承,会先执行最顶级父类的构造方法,然后依次执行各级个子类的构造方法package com.my.test;public class Son extends ...

    在创建子类的对象时,jvm会首先执行父类的构造方法,然后再执行子类的构造方法,如果是多级继承,会先执行最顶级父类的构造方法,然后依次执行各级个子类的构造方法

    package com.my.test;

    public class Son extends Father{

    SonProp r=new SonProp();

    public Son()

    {

    System.out.println(" Son is construct");

    }

    public static void main(String[] args)

    {

    new Son();

    }

    }

    class SonProp

    {

    public SonProp()

    {

    System.out.println(" SonProp is construct");

    }

    }

    class FatherProp

    {

    public FatherProp()

    {

    System.out.println(" FatherProp is construct");

    }

    }

    class Father

    {

    FatherProp sonProp=new FatherProp();

    public Father()

    {

    System.out.println(" Father is construct");

    }

    }

    执行结果为:

    FatherProp is construct

    Father is construct

    SonProp is construct

    Son is construct

    java继承中对构造函数是不继承的。

    以下是例子:

    public class FatherClass {

    public FatherClass() {

    System.out.println(100);

    }

    public FatherClass(int age) {

    System.out.println(age);

    }

    }

    public class SonClass extends FatherClass{

    public SonClass() {

    }

    public SonClass(int c) {

    System.out.println(1234);

    }

    public static void main(String[] args) {

    FatherClass f = new FatherClass(28);

    SonClass s = new SonClass(66);

    }

    }

    编译后执行结果如下是什么呢?

    分析:1. FatherClass f = new FatherClass(28);这句没有必要解释

    2.SonClass s = new SonClass(66);执行这句时,调用

    public SonClass(int c) {

    System.out.println(1234);

    }

    在这个构造函数中,等价于

    public SonClass(int c) {

    super();//必须是第1行,否则不能编译

    System.out.println(1234);

    }

    所以结果是 100

    1234

    3.如果子类构造函数是这样写的

    public SonClass(int c) {

    super(22);//必须是第1行,否则不能编译

    //显示调用了super后,系统就不再调用super();

    System.out.println(1234);

    }

    执行结果是 22

    1234

    总结1:构造函数不能继承,只是调用而已。

    如果父类没有无参构造函数

    创建子类时,不能编译,除非在构造函数代码体中第一行,必须是第一行显示调用父类有参构造函数

    如下:

    SonClass (){

    super(777);//显示调用父类有参构造函数

    System.out.println(66);

    }

    如果不显示调用父类有参构造函数,系统会默认调用父类无参构造函数super();

    但是父类中没有无参构造函数,那它不是不能调用了。所以编译就无法通过了。

    总结2:创建有参构造函数后,系统就不再有默认无参构造函数。

    如果没有任何构造函数,系统会默认有一个无参构造函数。

    展开全文
  • JAVA子类继承父类

    2021-03-01 06:34:01
    4、jvm的执行过程 (1)子类B 的构造方法被调用,实例化一个B对象,B对象的成员被初始化 (2)jvm隐含的调用父类的构造方法,实例化一个A对象,A对象的成员被初始化。 (3)由于A对象的printI()未被屏蔽,所以调用的...
  • 如果子类调用父类的无参构造函数,则通过super()调用来实现。 子类的每一个构造方法都必须显式或隐式调用父类的一个构造方法。 如果不显式调用, 则系统隐式调用super(),即父类的无参构造方法(如果父类无任何...
  • java子类调用父类的构造函数-----super()详解 java子类调用父类的构造函数-----super()详解 1.子类不能继承父类的构造函数,但是可以调用父类的构造函数 2.如果父类没有定义构造函数,系统会默认定义一个无参无...
  • java子类调用父类构造方法 来源:https://www.cnblogs.com/sunnychuh/archive/2011/09/09/2172131.html(本人用来方便查看笔记,不用于其他任何用途) java继承中对构造函数是不继承的,只是调用(隐式或显式)。 ...
  • java子类复制父类

    2021-02-27 20:25:27
    final在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰...
  • (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限。)比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们 的机会。...
  • public class qqqq extends Parent{public static void main(String[] ...}}class Parent{static{System.out.println("父类的静态块执行");}{System.out.println("父类的非静态块执行");}public Parent(){System.out...
  • Java中子类和父类的同名方法会处理为重载,若方法名和参数都相同,则覆盖父类方法。例如:public class Test {public void func(int value) {Log.d("Test", "func(int value):" + value);}public void func(float ...
  • java中的继承(子类调用父类构造方法还不懂)declarations n. 声明extends v. 继承继承中注意的问题:1 重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;重写方法不能...
  • ——子类父类之间继承中构造函数调用规则1.子类的构造过程中,必须调用其父类的构造方法2.如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法——代码class SuperClass{...
  • } JAVA:使用super调用父类的读域函数getAge() Person.java package test; public class Person { public Person(int age) { this.aAge = age; } public int getAge() { return aAge; } public void setAge(int age)...
  • 通过子类调用父类的变量,有两种方法:1、把父类的变量设置成public:package triangle.opengl.wlz.stu.childusefathervariable;import android.util.Log;public class BasePublicVariable {private String TAG = ...
  • Java里子类调用父类构造方法问题

    千次阅读 2021-02-13 01:44:43
    Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?答案如下:当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个...
  • class Person(object): def init...class Father(Person): # 如果我们现在想在原有父类方法基础上扩展,例如我们现在需要重写一个init方法 # 可以接收 name, age ,gender三个属性 def init(self, name, age, gender).
  • 由于现代的编译器都可以对内存及其访问进行优化,所以,如果当子类增加了新的属性:比如父类是一个字节和一个整数,子类又增加了一个字节和一个整数而编译器对子类内存数据的位置进行了调整的话,那在逻辑层面上结构...
  • 子类不能重写父类的静态方法,私有方法。即使你看到子类中存在貌似是重写的父类的静态方法或者私有方法,编译是没有问题的,但那其实是你重新又定义的方法,不是重写。具体有关重写父类方法的规则如下:重写规则之一...
  • java中,子类重写父类方法时,子类的返回值可以和父类相同,或者为父类子类。 比如 abstract class Parent{ abstract Parent test(); } class Son extends Parent{ @Override Son test() { return new Son...
  • 父类 FatherClasspackage 父类子类方法调用顺序;/*** 父类* @author shundong**/public class FatherClass {private int i =0;private String name;/*** 父类无参构造*/FatherClass(){System.out.println("--父类...
  • 满意答案dongrunze2013.04.13采纳率:49%等级:11已帮助:6046人定,private修饰的变量和方法不可被子类继承,在子类中可以增加子类的变量和方法3.(你写重复了)所有子类在产生对象是,都会默认去调用父类的构造方法...
  • 1.为什么创建子类的对象也调用父类的构造函数?class Super {String s;public Super(){System.out.println("Super");}}public class Sub extends Super {public Sub(){System.out.println("Sub");}public static...
  • public class Teacher extends Employee { public static void main(String[] args) { } public void method() { super.method();...父类的方法 method() 是成员方法,虽然子类重新覆盖了,但是子类也继承
  • 这个时候继承的作用就来了,我们可以定义一个猫类,可以继承他的父类也就是动物类的属性方法,也可以再为子类定义的新方法。 我们把这种可以使用别的类的属性和方法的方式叫做继承。使用者是子类,被使用者
  • 成员变量的隐藏和方法的重写Goods.javapublic class Goods {public double weight;public void oldSetWeight(double w) {weight=w;System.out.println("double型的weight="+weight);}public double oldGetPrice() {...
  • 1653 子类 可以定义一个同名专方法,但不是重属载。实例方法 可以获取到调用的是那一个类,比如下面例子:publicclassClass1{publicstaticvoidprint(){System.out.println("printc1");}publicvoidprint2(){...
  • } } 输出结果是Buff 我没看懂name传递过程中new Hippo ("Buffy")变量传递给构造函数public Hippo(String name)后是怎么传递给return name返回上去的 super(name)引用的是什么,求解释运行过程。 十分感谢

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 161,923
精华内容 64,769
关键字:

java子类调用父类函数

java 订阅