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

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自身拥有的方法(因为它只能看到自己拥有的实例方法)。

 

你可能感兴趣的:(JavaSE基础)