• 继承:super父类、转型


    思维导图有

    使用super关键字

    子类可以继承父类的非私有成员变量和成员方法(不是以private关键字修饰的)作为自己的成员变量和成员方法。但是,如果子类中声明的成员变量与父类的成员变量同名,则子类不能继承父类的成员变量,此时称子类的成员变量隐藏了父类的成员变量。如果子类中声明的成员方法与父类的成员方法同名,并且方法的返回值及参数个数和类型也相同,则子类不能继承父类的成员方法,此时称子类的成员方法重写了父类的成员方法。这时,如果想在子类中访问父类中被子类隐藏的成员方法或变量,就可以使用super关键字。

    1.调用父类的构造方法

    子类可以调用由父类声明的构造方法。但是必须在子类的构造方法中使用super关键字来调用。语法格式如下:

    super([参数列表]);

    如果父类的构造方法中包含参数,则参数列表为必选项,用于指定父类构造方法的入口参数。

    2.操作被隐藏的成员变量和被重写的成员方法

    如果想在子类中操作父类中被隐藏的成员变量和被重写的成员方法,也可以使用super关键字。语法格式如下:

    super.成员变量名

    super.成员方法名([参数列表])

    package org.hanqi.pn0120;
    
    public class Son extends Father {
        
        //Object a;所有类的父类
        
        public Son()
        {
            //super表示父类。super在最前面
            super("儿子");
            
            System.out.println("子类的构造方法");
        }
        
        public void sing()
        {
            System.out.println("我喜欢唱歌");
        }
        
        
        //覆盖(重写)
        public void work()
        {
            //调用父类的方法
            //super.work();
            
            //System.out.println("我不喜欢上班,我要去参加海选");
            
            System.out.println("我边上班边练歌");
        }
        
    super

    转型

    1.向上转型

    子类转成父类:

    ①不能调用子类的特有的成员

    ②可以调用父类的成员

    ③如果被子类重写了,就调用子类的方法

    2.向下转型

    父类转成子类:

    ①需要强制转换(子类的类型)

    ②一般是先有向上转型,再有向下转型

    常用方式:

    先向上转成Object,再向下转型

    类似泛型

    //转型
        //向上转型==>子转父
        Father f1=new Son();
        System.out.println("名字是:"+s.getName());
        f1.work();//显示子类的work,如果被重写,调用子类方法,
        //f1.sing  转型后会损失子类特有的方法
        
        
        
        //向下转型==>父转子
        System.out.println("这是向下转型");
        //Son s1=(Son) new Father("");
        Son s1=(Son)f1;//向下转型前,必须要有一个向上转型作为前提条件
        s1.work();
        
        System.out.println();
        Father f2=(Father)Son.getData(1);
        f2.work();
    转型
  • 相关阅读:
    Ubuntu18.04查看ip地址
    使用Vmware克隆功能快速创建多台虚拟机
    使用Vmware快照功能对虚拟机进行备份还原
    安装Vmware并创建Ubuntu虚拟机
    使用vmware+Ubuntu搭建hadoop集群
    Gitee图床+PicGo+Typora便捷在博客中使用图片
    使用Gitee Pages+hugo免费搭建你的博客
    Scheduler的WaitRun存在卡死的问题
    使用OpenJDK进行Delphi Android开发
    citus
  • 原文地址:https://www.cnblogs.com/cycanfly/p/5256019.html
Copyright © 2020-2023  润新知