多重继承
有时候我们会希望子类别可以继承两个以上的父类别,以便使用每一个父类别的功能,但JAVA并不允许多个父类别继承。理由很简单,因为JAVA的设计是以简洁为导向,而利用类别的多重继承将使得问题复杂化。但藉由介面的机制,多重继承的处理还是可以实现,就是透过类别来实作两个以上的介面!
类别里的函数只要明确定义每一个介面里的函数,便可达到多重继承的目的。
class 类别名称 implements 介面1,介面2,...{
...
}
interface Shape{ //定义Shape介面
final double PI = 3.14;
}
interface Color{
abstract void setColor(String str); //定义Color介面
}
class Circle implements Shape,Color{ //实作Shape与Color介面
double radius;
String color;
public Circle(double r){
radius = r;
}
public void setColor(String str){ //定义Color介面里的setColor()
color = str;
System.out.println("color= "+color);
}
public void area(){ //定义Shape介面里的area()函数
System.out.println("area= "+PI*radius*radius);
}
public class Test{
public static void main(String args[]){
Circle cir;
cir = new Circle(2.0);
cir.setColor("Blue");
cir.area();
}
}
介面的延伸
介面与一般的类别一样,可透过继承的技术来衍生出新的介面。原来的介面称为基底介面(base interface)或父介面(super interface),衍生出的介面称为衍生介面(derived interface)或子介面(sub interface)。透过这种机制,衍生介面不仅可以保有父介面的成员,同时也可以加入新的成员以因应实际的问题所需。
介面的继承也是透过关键字extends。
interface 子介面名称 extends 父介面名称1,父介面名称2,...{
...
}
类别关系的判别-instanceof
instanceof运算子是用来测试物件是否与某个类别(class)或是介面(interface)有继承关系,回传值为布林值。
object instanceof ClassName
传回值为true,表示物件object是ClassName的类别或其子类别之物件;传回值为false,表示物件object与该类别及其子类别无关连。
在使用instanceof运算子时,物件与类别间要有继承的关系,否则编译时会有「inconvertible types」的错误讯息。
耶!!!进入倒数啦啦啦啦啦啦~~
本来早上就要打文,结果网站挂掉...
See U tomorrow~
菜鸟工程师也有分享食记,欢迎大家追踪喔~~
https://instagram.com/engineer_bodyfat?utm_medium=copy_link
<<: Day 23 - Tailwind Plugin 使用 (二) => Typography
>>: [Day08] 流程判断:if else 与 switch
前因 本身是个有十年以上平面设计经验的转职者,因为接触 Side Project,而开始从切版接案接...
昨天帮我们用 Reactive Forms 所撰写的登入系统写完单元测试之後,今天则是要来为它写整...
在 Spring boot 可以使用 Logback 进行配置,系统预设加载日志配置档案 logba...
梯度下降法经常被使用为优化学习的一种方式,寻找局部最佳解(至於为何是局部,之後会提到),想像有个...
前言 上次我们提到,语言模型( language model, LM )就是赋予一段文句机率值。 在...