代码编织梦想

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34663443/article/details/115089256

(多态)子类实例赋给父类引用的简单例子_理想在哪里的博客-爱代码爱编程_子类的引用赋给父类对象

注意(子类实例赋给父类引用): 父类引用不能调用子类中特定方法;父类引用调用的是子类重写或实现父类的方法,引用变量是子类对象的地址。 创建一个抽象类Teacher,包括name属性和TeachClass()方法;

关于java中子类调用父类方法-爱代码爱编程

https://blog.csdn.net/twilight_karl/article/details/53494296 本人在查看上面的文章的时候,发现,并不理解上面的输出情况。所以重新写了一篇文章进行解释。 代码如下。 package Temp; class A { int x = 6; private int y = 2;

java中子类调用父类构造方法,注意事项-爱代码爱编程

  继承有个特点,就是子类无法访问父类的private字段或者private方法。例如,Student类就无法访问Person类的name和age字段: class Person {     private String name;     private int age; } class Student extends Person {     p

java 调用父级方法_关于Java中子类调用父类方法-爱代码爱编程

请注意以下标红的都为重点,重点,重点(重要的事情说三遍~): 1. 当一个类继承于另一个类,子类中没有父类的方法时。用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找。 2. 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。 如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中

java 调用父级方法_java子类调用父类的方法是什么-爱代码爱编程

java子类调用父类的方法:1、子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找;2、如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。 【相关学习推荐:java基础教程】 java子类调用父类的方法: 当一个类继承于另一个类,子类中没有父类的方法时。用子类的对象调用方法时,会

java子类调用父类方法_java子类调用父类的方法中包含子类重写的实例方法-爱代码爱编程

# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了 # 先看代码: public class Common { public static void main(String[] args) { Sub sub = new Sub(); sub.testSub(); } } class Parent { protected bo

java子类调用父类变量值_java子类如何调用父类变量和方法-爱代码爱编程

深入浅出,保证一看就懂 package com.company; /** * Created by liuyazhou on 2016/9/21. */ public class Test { // private static String str1="str1"; ///在TestSon中System.out.println(str1)

java如何调用父类的实例对象_在子类对象java上调用父类的方法-爱代码爱编程

我有几个课程可以扩展其他课程.它们都有一个共同的方法结果.如果我有foobarbaz的实例,是否可以调用其父/祖父母的结果方法? public class Foo { protected int resultA; public void calc(){ resultA=...} public void result(){ return resu