美文网首页
封装、继承、多态

封装、继承、多态

作者: Reiko士兵 | 来源:发表于2019-11-20 10:52 被阅读0次

函数签名:函数名,函数参数的个数、类型以及顺序

封装

把属性声明为private私有化,对外提供public的getter和setter方法,封装增强了对属性的控制。

class person {
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (0 < age && age < 150) {
            this.age = age;
        } else {
            this.age = 18;
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if (name.isBlank()) {
            this.name = "Triagen";
        } else {
            this.name = name;
        }
    }
}
继承

子类继承父类非private的属性和方法,实现代码复用。子类不仅可以修改父类的方法,还可以添加自己的属性和方法。子类对父类方法的修改通过覆盖实现,覆盖要求子类和父类函数签名相同,子类返回类型和父类相同或者为父类返回类型的子类,且子类方法的存取权限不能比父类低,即父类方法为public时,子类方法不能为protected。

class Monster {
    A frighten(int x) {
        System.out.println("Arrrgh");
        return new A();
    }
}

class Vampire extends Monster {
    B frighten(int f) {
        System.out.println("a bite?");
        return new B();
    }
}

class Dragon extends Monster {
    A frighten(int degree) {
        System.out.println("breath fire");
        return new A();
    }
}

class A {

}

class B extends A {

}
多态

多态三要素:继承、覆盖、向上转型。子类继承父类的方法,对父类方法进行了覆盖重写,在调用时,将子类对象的引用赋给父类类型,父类类型在调用同一名称的方法时,因其具体指向子类的不同调用不同的方法。

public class HelloWorld {

    public static void main(String[] args) {
        Monster[] ma = new Monster[3];
        ma[0] = new Vampire();
        ma[1] = new Dragon();
        ma[2] = new Monster();

        for (int x = 0; x < 3; x++) {
            ma[x].frighten(x);
        }
    }
}

class Monster {
    A frighten(int x) {
        System.out.println("Arrrgh");
        return new A();
    }
}

class Vampire extends Monster {
    B frighten(int f) {
        System.out.println("a bite?");
        return new B();
    }
}

class Dragon extends Monster {
    A frighten(int degree) {
        System.out.println("breath fire");
        return new A();
    }
}

class A {

}

class B extends A {

}

输出结果

a bite?
breath fire
Arrrgh
覆盖与重写

覆盖要求函数签名一致,子类返回类型和父类返回类型相同或者为父类返回类型的子类,且子类方法的存取权限不能比父类低。重写要求函数名相同,但函数签名不相同,对返回类型、存取权限并无限制。覆盖存在于子类继承父类,重写并无此类关系,同一类中就可以进行重写。

相关文章

  • iOS开发之一OC语言的特性

    三大特性:封装、继承、多态 一、封装(成员变量的封装) 二、继承 三、多态(多种形态)

  • java多态

    概述 面向对线的四个基本特征:抽象,封装,基础,多态。抽象,封装,继承是多态的基础,多态是抽象,封装,继承的表现 ...

  • Python基础-day12

    list ​ 封装 ​ 继承 面向对象的三大特性 ​ 封装 继承 多态 封装 ​ 生活里 ​ ...

  • 31-封装、继承、多态

    封装、继承、多态 面向对象编程有三大重要特征:封装、继承和多态。 继承 继承机制实现了代码的复用,多个类公用的代码...

  • Java的基本特性

    关系 Java的四个基本特性分别是抽象,封装,继承,多态。概括起来可以这么理解,抽象、封装、继承是多态的基础,多态...

  • iOS基础 - oc的三大特性

    封装、继承、多态 oc是面向对象的程序设计语言,而面向对象的三大特征:封装、继承、多态。 封装 没有绝对的封装,只...

  • Java笔记

    Java基础 Java面试通关要点 1.面向对象的特征 封装 继承 多态 封装继承多态 2.final,final...

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • day09-Java面向对象三(多态/抽象类/接口)

    9.0 Java面向对象三大特性 封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的 多态概念:指...

  • 2020-05-16--Java--day09【继承、super

    1.继承 三大特征:封装,继承,多态 继承是多态的前提,没有继承就没有多态 继承的主要解决的问题就是:共性抽取 在...

网友评论

      本文标题:封装、继承、多态

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