DAY21-JAVA的多重继承

多重继承
有时候我们会希望子类别可以继承两个以上的父类别,以便使用每一个父类别的功能,但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

Day 01:入坑 Angular 的前因後果

前因 本身是个有十年以上平面设计经验的转职者,因为接触 Side Project,而开始从切版接案接...

Angular 深入浅出三十天:表单与测试 Day09 - 整合测试实作 - 登入系统 by Reactive Forms

昨天帮我们用 Reactive Forms 所撰写的登入系统写完单元测试之後,今天则是要来为它写整...

Logback 配置来客制化 Log 讯息吧

在 Spring boot 可以使用 Logback 进行配置,系统预设加载日志配置档案 logba...

Day4:梯度下降法(Gradient descent)

  梯度下降法经常被使用为优化学习的一种方式,寻找局部最佳解(至於为何是局部,之後会提到),想像有个...

[常见的自然语言处理技术] N-Gram Model 与关键字预测 (II)

前言 上次我们提到,语言模型( language model, LM )就是赋予一段文句机率值。 在...