继承:super父类、转型

摘要:
如果子类中声明的成员方法与父类的成员方法同名,并且方法的返回值和参数的数量和类型相同,则子类不能继承父类的元素方法。此时,子类的成员方法重写父类的成员法。此时,如果要访问子类中父类中子类隐藏的成员方法或变量,可以使用super关键字。

思维导图有

继承:super父类、转型第1张

使用super关键字

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

1.调用父类的构造方法

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

super([参数列表]);

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

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

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

super.成员变量名

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

继承:super父类、转型第2张继承:super父类、转型第3张
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

继承:super父类、转型第4张

转型

1.向上转型

子类转成父类:

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

②可以调用父类的成员

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

2.向下转型

父类转成子类:

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

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

常用方式:

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

类似泛型

继承:super父类、转型第5张继承:super父类、转型第6张
//转型
    //向上转型==>子转父
    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();
转型

免责声明:文章转载自《继承:super父类、转型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[IDEA] Idea复制文件到项目一直updating indices的问题把旧光驱改CD播放机的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

google代码风格(转)

Google C++ 风格指南 - 中文版 from http://code.google.com/p/google-styleguide/ 版本: 3.133 原作者: Benjy Weinberger Craig Silverstein Gregory Eitzmann Mark Mentovai Tashana Landray 翻译: Yul...

KVC

1、概念: KVC(Key-value coding):键值对编码,也就是我们可以通过变量的名称来读取或者修改它的值,而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定。对于类里的私有属性,Objective-C是无法直接访问的,但是KVC是可以的。 作用: 取值和赋值(开发中基本不用) 获取对象私有变量的值.(...

runtime的基本应用

1.什么是runtime? runtime是一套底层的C语言API,包含很多强大实用的C语言数据类型和C语言函数,平时我们编写的OC代码,底层都是基于runtime实现的。 2.runtime有什么作用? 1.能动态产生一个类,一个成员变量,一个方法2.能动态修改一个类,一个成员变量,一个方法3.能动态删除一个类,一个成员变量,一个方法 3.常用的头文件...

switch语句不能使用枚举的成员变量

出现问题: 写了个代码,需要使用枚举的来判断对于的事务处理 然而这里的编译器报错:constant expression required switch 的case中,必须要用常量,想了一下,枚举里面的code是可以相同的 实在不想在 类里面 定义 public static final int code 这样的常量来代替枚举 解决方法: 在枚举类中添加...

深度解析C语言中的sizeof

1)解析C语言中的sizeof 一、sizeof的概念  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法  1、用于数据类型   sizeof使用形式:...

iOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系

类(class):具有相同属性和行为等同一类元素等总称,类是一个抽象的概念。 区分是类还是对象,看它能否继续被细分。 在OC中,类是表示对象类型的结构体,对象通过类来获取自身的各种信息。类由两个部分组成:*.h和*.m文件组成。 *.m文件中 implemention部分是类的实现部分,内部包含类中的各种信息,包括各种实例方法或类方法。 类别( categ...