博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
继承与多态
阅读量:5327 次
发布时间:2019-06-14

本文共 1958 字,大约阅读时间需要 6 分钟。

1.

代码:

class Grandparent {    public Grandparent()     {            System.out.println("GrandParent Created.");    }    public Grandparent(String string)     {            System.out.println("GrandParent Created.String:" + string);     }}class Parent extends Grandparent{    public Parent()     {            super("Hello.Grandparent.");            System.out.println("Parent Created");       // super("Hello.Grandparent.");      }}class Child extends Parent {    public Child()     {            System.out.println("Child Created");      }}public class TestInherits {    public static void main(String args[])     {            Child c = new Child();  }}

修改之前的运行结果

修改之后

在Java语言中,调用子类的构造方法之前,会先行调用父类的无参构造函数,而子类的构造方法会通过super()方法语句调用父类当中的特别的构造函数,而且必须写在第一行,否则会报错

思索:

在Java中子类是通过父类继承,所以子类有父类的所有非私有的属性和方法,如果不调用父类的构造方法,那么不能初始化父类中定义的属性,就给父类的属性分配内存空间 ,如果父类的属性没有分配内存空间,那么子类访问父类的属性,就会报错。

2.

代码如下:

public class Fugai {    public static void main(String[] args)    {        Son x=new Son();        x.add();    }}class Father//父类{    public void add()    {        System.out.println("父亲");    }}class Son extends Father//子类继承与父类{    public void add()    {        super.add();        System.out.println("儿子");    }}

结果截图

在Java中,子类如果想要调用父类之中的函数可以引用super()

下面总结覆盖方法的四点性质

(1)覆盖方法所抛出的异常不能比原方法更多。(2)覆盖方法的访问范围不能超出元方法的范围(3)声明为final方法不允许覆盖。例如,Object的getClass()方法不能覆盖。(4)不能覆盖静态方法。

3有关于类型转化的问答

 m=d;正确,子类的对象可与i直接赋值给基类变量

d=m; 错误,基类对象要赋给子类对象变量,必须执行类型转换,引用语句的格式为(子类对象变量=(子类名)基类对象名;)

d=(Dog)m;正确,进行了类型转化

 d=c; 错误,不同子类之间不能进行赋值操作

c=(Cat)m 错误,m已经转化成dog类型,不能再进行赋值给cat的操作

4.

程序运行之后的结果

Parent.printValue(),myValue=100//父类打印数字

Child.printValue(),myValue=200//子类打印数字
Child.printValue(),myValue=200//父类对象访问子类成员,调用相同的函数名的函数属于子类的;父类的变量进行相关的原算,但是,如果这时父类变量指向子类对象,继续调用得方法和变量仍然是子类覆盖后的新的变量和方法的
Child.printValue(),myValue=200//任然调用的被覆盖后的子类数字
Child.printValue(),myValue=201//将父类强制转化为子类进行输出,调用的是子类的成员函数以及方法

将代码修改之后,会出现不同的结果

黑色进行标注的地方时进行修改之后的代码,在进行输出之后程序结果不同

 

转载于:https://www.cnblogs.com/xuzhaoyang/p/7812837.html

你可能感兴趣的文章
个人作业
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>