如何理解Java中"父子类对象从父类实例化由子类实例化

父类对象由子类实例化 什么意思_百度知道
父类对象由子类实例化 什么意思
我有更好的答案
答案来自知乎:这个涉及到对象的多态性。父类对象由子类实例化,即是对象的多态性中的一种类型之一:向上转型父类 父类对象=子类实例意思就是说:我们是使用子类来实例化对象,而这个对象却是披上了“父类对象”的名称class A{public void fun1(){} //定义父类中的fun1方法public void fun2(){} //定义父类中的fun2方法}class B extends A{public void fun1(){} //覆写父类A中的fun1方法public void fun3(){} //定义子类自己的方法这个涉及到对象的多态性。父类对象由子类实例化,即是对象的多态性中的一种类型之一:向上转型父类 父类对象=子类实例意思就是说:我们是使用子类来实例化对象,而这个对象却是披上了“父类对象”的名称class A{public void fun1(){} //定义父类中的fun1方法public void fun2(){} //定义父类中的fun2方法}class B extends A{public void fun1(){} //覆写父类A中的fun1方法public void fun3(){} //定义子类自己的方法}public class Test{public static void main(...){A a=new B();a.fun1(); // 可执行a.fun3(); //无法执行,父类中没有定义fun3方法}} public class Test{public static void main(...){A a=new B();a.fun1(); // 可执行a.fun3(); //无法执行,父类中没有定义fun3方法}}
采纳率:47%
为您推荐:
其他类似问题
实例化的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。浅谈Java中父类与子类的加载顺序详解
转载 &发布时间:日 16:32:27 & 作者:
本篇文章是对Java中父类与子类的加载顺序进行了详细的分析介绍,需要的朋友参考下
代码如下:class Parent {&&& // 静态变量&&& public static String p_StaticField = "父类--静态变量";&&& // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例)  &&& //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化&&& public String p_Field = "父类--变量";&&& // 静态初始化块&&& static {&&&&&&& System.out.println(p_StaticField);&&&&&&& System.out.println("父类--静态初始化块");&&& }&&& // 初始化块&&& {&&&&&&& System.out.println(p_Field);&&&&&&& System.out.println("父类--初始化块");&&& }&&& // 构造器&&& public Parent() {&&&&&&& System.out.println("父类--构造器");&&& }}public class SubClass extends Parent {&&& // 静态变量&&& public static String s_StaticField = "子类--静态变量";&&& // 变量&&& public String s_Field = "子类--变量";&&& // 静态初始化块&&& static {&&&&&&& System.out.println(s_StaticField);&&&&&&& System.out.println("子类--静态初始化块");&&& }&&& // 初始化块&&& {&&&&&&& System.out.println(s_Field);&&&&&&& System.out.println("子类--初始化块");&&& }&&& // 构造器&&& public SubClass() {&&&&&&& //super();&&&&&&& System.out.println("子类--构造器");&&& }&&& // 程序入口&&& public static void main(String[] args) {&&&&&&& System.out.println("*************in main***************");&&&&&&& new SubClass();&&&&&&& System.out.println("*************second subClass***************");&&&&&&& new SubClass();&&& }}输出结果父类--静态变量父类--静态初始化块子类--静态变量子类--静态初始化块*************in main***************父类--变量父类--初始化块父类--构造器子类--变量子类--初始化块子类--构造器*************second subClass***************父类--变量父类--初始化块父类--构造器子类--变量子类--初始化块子类--构造器结果分析:很显然在加载main方法后,静态变量不管父类还是子类的都执行了,然后才是父类和子类的的普通变量和构造器。这是因为,当要创建子类这个对象时,发现这个类需要一个父类,所以把父类的.class加载进来,然后依次初始化其普通变量和初始化代码块,最后其构造器,然后可以开始子类的工作,把子类的.class加载进来,在做子类的工作。另外在Java中子类中都会有默认的调用父类的默认构造函数即super(),当仅仅有默认构造函数里Java替你做了,我们可以做个实验,如果在父类中注释掉默认构造函数,加一个有参的构造函数时,如果子类中不加super(argument),此时会报语法错误如果我们把Main方法中的内容全注释掉,你会发现只会输出    父类--静态变量    父类--静态初始化块    子类--静态变量&&&&&&& 子类--静态初始化块&&&&&&& 其它不会输出了。原因呢? 还要研究
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Java的继承与子类实例化 - 简书
Java的继承与子类实例化
Java的继承
什么是继承(extends)?
继承是:新定义的类是从已有的类中获取属性和方法的现象。 这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。
/什么是继承/
public class ExtendsDemo1 {
public static void main(String[] args) {
Truck t = new Truck();
t.size = 100;
//不建议这么写。初始化成员变量最好使用构造方法,或者提供set(), get()接口.
//货车类的一个实例t从汽车类从继承了size, color属性。
//而货车比汽车多一个货箱
class Car {
//车体大小
class Truck extends Car {
String packingB
继承的好处
提高了代码的重用性
让类和类之间产生了关系, 为多态创造了条件。
继承(extends)的格式
class SubClass extends SuperClass {
//执行语句;
ps:(extends是拓展的意思,subClass在superClass的基础上进行拓展)
子类实例化
子类实例化中的关键字super
super 在构造函数中出现的时候一般是当前这个类继承了其他的类,super 的出现就是为了调用父类的构造函数
class Tiger {
// 身体高度
public Tiger() {
public void print() {
System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!");
public class JavanTiger extends Tiger {
public JavanTiger() {
// 调用父类无参数的构造函数
public static void main(String[] args) {
new JavanTiger();
其实在类JavanTiger 中的构造函数中的 super()可以不写,JAVA会默认调用父类的无参数的构造函数,但如果父类没有定义无参数的构造函数,没有语法错误,程序会自动退出,没有任何打印语句,这时候你需要手动调用其他父类的构造函数
class Tiger {
// 身体高度
public Tiger(int age) {
this.age =
public void print() {
System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!");
public class JavanTiger extends Tiger {
public JavanTiger() {
// 调用父类有参数的构造函数
public static void main(String[] args) {
new JavanTiger();
这段代码中的 super(1)必须要写进去,否则编译器会报错。“this()是调用自己其他的构造函数,super()是调用自己继承的父类的构造函数“,如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,总是会忽略这一点。
那门这两个关键字能不能同时出现在子类的一个构造函数当中纳?答案肯定是不能。先说下自己的理解:
1)在新建一个基类的时候,不论递归调用几次自身的构造函数,最终你都会去调用父类的构造函数,(不是显式调用的话,系统会调用默认无参数的父类构造函数);
2)JAVA 中规定使用 this 和 super 时必须放在构造函数第一行,只有一个第一行;
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。 1、一个&.java&源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个publ...
面向对象 单词表: Extends
一可死腾特
继承 Start 死打特
开始 Stop 死躲普
停止 Call 阔儿
打电话 Eat 亿特
手机 Super
超,父 Function 发可醒
功能 Method 麦舍
方法 Abst...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
一、基本数据类型 注释 单行注释:// 区域注释:/*
*/ 文档注释:/** */ 数值 对于byte类型而言,有28个可能的数值,一半是负数一半是正数。因为0被存储为正的二进制,因此整数的个数比负数少1。 如果要表示八进制在数值前加0,要表示十六进制在数值前加0x。 ...
我一直以为作家和画家是同根同源的存在。 只不过画家把思想赋予色彩图案,从而大众能看出色彩图案中的文字意境来。 作家则把思想具像化为笔墨文章,我们也从而能从文字中读出独特的色彩来。 因此作家和画家都能写故事,不同的只是观众的领悟力罢了。 作家中也不乏会画画的人,画家中也不乏写...
工作时间比较长,所以也是断断续续在看《断舍离》。但是听说日本人已经从断舍离的境界上升到极限主义了。书里有一段话正好说到了我现在的状态:家里有四个人,那么四个人必然都拥有属于各自的物品,可负责收拾屋子的却只有你一个人,就是说,你一个人要处理四个人的东西,所以处理不好也很正常。...
当北京红黄蓝幼儿园的一位母亲像往常一样欣慰地送孩子去幼儿园时,一向爱幼儿园、爱同学的孩子却哭着不肯去。这次这位母亲没有逼着孩子去学校,她不经意地询问孩子。而这不经意的对话却让这位母亲深感不安,之后与其它家长沟通后,骇人听闻的事情渐渐浮出水面。
在踏上教育的旅途...
奔走两个多小时 山路有点陡 看到风景的那一刻 都值得了
达达玲说她并不会去关注某些诺奖得主的研究成果,因为压根就看不懂,看不懂的东西对于自己是没有实用意义的,因而不去关注。还提到了关于榜样的问题,达玲称之为榜样的并不是媒体大众所宣扬的那些高高在上的名人,而更多的是可以接触到的身边小人物。这种说法里面没有刻意的成份,选择的标... 上传我的文档
 下载
 收藏
粉丝量:80
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
Java 中深层理解父类引用指向子类对象
下载积分:600
内容提示:Java 中深层理解父类引用指向子类对象
文档格式:PDF|
浏览次数:999|
上传日期: 23:13:00|
文档星级:
全文阅读已结束,如果下载本文需要使用
 600 积分
下载此文档
该用户还上传了这些文档
Java 中深层理解父类引用指向子类对象
关注微信公众号没有更多推荐了,
不良信息举报
举报内容:
关于java中父类引用子类实例化的问题
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 父类对象由子类实例化 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信