欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面向对象三个特征--封装、继承及多态

程序员文章站 2022-04-27 16:45:12
...

1、封装

 

    1)为什么要封装?简单来说就是为了保证数据的安全性,以及隐藏复杂性(接口的具体实现),从而实现软件的灵活性、可维护性及可扩展性。

    2)如何实现封装?隐藏实例变量,公开访问方法。

        a)保护实例变量(使用private修饰符)。

        b)创建公共的访问方法(比如getter()和setter())。

    3)IS-A指继承或实现,使用extends关键字表达(不是implements)。

    4)“IS-A” 、“继承自”以及“是...的子类型”是等价的。

    5)HAS-A 指一个类的实例拥有另一个类(或同一个类)的实例的引用。

 

2、继承

 

    1)继承就是允许一个类成为另一个类(父类)的子类,从而继承该父类公共及受保护的变量及方法。

    2)继承是支持IS-A、重写、重载、强制转换及多态性的关键概念(基础)。

    3)使用继承的理由?

        a)促进代码复用(可以复用父类的公共成员)。

        b)使用多态性(父类引用能指向子类的对象)。

 

3、多态性

 

    1)多态性:父类的引用能指向子类的对象,从而能够接受多种形式的子类对象。

    2)可以传递多个IS-A测试的Java对象都可以被看做是多态的。

    3)访问对象的唯一方式是通过引用变量。

    4)关于引用变量:

        a)只能属于一种类型(引用类型本身不可变,但引用对象的类型可以改变)。

        b)可以重新指向新的对象(除非被声明为final)。

        c)引用变量能够引用与所声明引用的类型以及子类型的任何对象。

        d)引用变量的类型(不是对象类型)决定在编译时可以调用哪些方法。

        e)对象类型(不是引用类型)决定在运行时使用哪个重写(多态)的方法。比如Animal a=new Dog(),使用a调用eat()方法,如果Dog重写了Animal的eat()方法,则运行时则会调用Dog重写的eat()方法,否则永远只会调用Animal自身拥有的方法(因为它只能看到自己拥有的实例方法)。