美文网首页
cs61b2018sp WEEK4.1 继承和实现

cs61b2018sp WEEK4.1 继承和实现

作者: 且乐一杯酒 | 来源:发表于2022-03-21 08:29 被阅读0次

2022.3.22

WEEK4.1 继承和实现

一、内容

1.重载(overload)

两个方法名字一样,但参数不同


2.父类(Hypernyms——上位词)、子类(Hyponyms——下位词)

is a原则,子类是一种父类


3.接口(Interface)

接口使用可以用有(has a)关系来判断是否使用,比如猫有爪子,就可以实现这个接口
1.注意接口里的方法不能用private修饰,因为接口规定了实现它的类应该实现什么方法,所以方法都应该为可见的。
2.接口里的方法没有函数体,即没有具体实现,而是由实现它的类来编写

那怎么实现呢?

implements关键字
注:接口名后面的<>是泛型,别忘了

4.重写(overriding)

子类和父类有同一个方法名、参数(或者说签名——signatures相同:方法签名 == 方法的名称加参数类型),就为重写


在重写的方法前面加上@Override标签,起到提醒的作用,如果实际上没有成功重写,就不会编译并且抛出错误信息

5.接口继承(Interface Inheritance)

子类必须重写所继承的接口里的所有方法。
定义的一个参数为父类的方法,在使用时可以传子类进去,因为子类是一种(is a)父类

6.实现继承(Implementation Inheritance)

在接口的方法中,我们在前面加上default,就可以给这个方法写函数体,我们可以使用这个接口的其他方法写在这个default函数中。
而在子类中,我们没有重写这个方法,但这个方法也可以被我们使用,相当于进入到了接口去使用这个方法!


7.静态类型和动态类型(Static Type and Dynamic Type)

如下例子,LivingThing为静态类型,声明之后就不会变了,其占用64bit;
而第二行new的Fox为动态类型


如下的第一行把lt1指向的Fox动态类型地址给了a1;第二行把a1指向的动态类型Fox给了有静态类型Fox的h1;
第三行lt1新指向了动态类型Squid

当然,静态类型有如下第一行的别称,动态类型有如下第二行的别称

如果一个动态类型中有一个方法重写了一个静态类型的方法,在使用时会优先使用动态类型中的方法,称为动态方法选择

我们观察如下练习,前三个都好说,都是动态选择,但第四个呢?看起来Dog中有重写的方法



然而用的是接口中的方法



原因很简单,因为Dog中的flatter方法中参数和Animal中的参数不同,这不是重写!而是重载!

相关文章

  • 条款34:区分接口继承和实现继承

    区分接口继承和实现继承 c++的(公有)继承主要有两个意图:实现继承和接口继承。实现继承其实体现了面向对象封装的特...

  • js中的继承-原型与原型链

    面向对象的语言支持两种继承方式,接口继承和实现继承js无法实现接口继承,只支持实现继承,主要通过原型链来实现。具体...

  • js对象——继承(2)

    继承分为接口继承和实现继承,但由于接口继承只继承方法签名,而函数没有签名,所以ECMAScript只支持实现继承(...

  • 7、面向对象的程序设计3(《JS高级》笔记)

    三、继承 许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际方法。由...

  • javascript代码积累

    一、javascript实现继承 1.基于原型链实现继承 2.基于属性和方法复制实现继承 二、javascript...

  • Javascript基础系列之继承

    继承 许多 OO 语言都支持两种继承方式:接口继承和实现继承。但是ECMAScript中只支持实现继承,下面就是实...

  • 面向对象——继承

    许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。ECMAS...

  • 高程三 关于原型链 阅读笔记

    许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。由于函数没...

  • JavaScript实现继承的方法

    大多OO语言都支持两种继承方式: 接口继承和实现继承 ,而ECMAScript中无法实现接口继承,ECMAScri...

  • JS继承

    大多OO语言都支持两种继承方式: 接口继承和实现继承 ,而ECMAScript中无法实现接口继承,ECMAScri...

网友评论

      本文标题:cs61b2018sp WEEK4.1 继承和实现

      本文链接:https://www.haomeiwen.com/subject/uvbadrtx.html