Android里的封装,继承,多态,都是表现在哪里,都是有啥方法,有啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android里的封装,继承,多态,都是表现在哪里,都是有啥方法,有啥相关的知识,希望对你有一定的参考价值。

封装,例如android中一个View就是封装了一系列的方法,这些方法系统已经给你封装好了,你只需要去调用即可。
继承,例如一个Activity(界面),创建一个界面就需要去继承它,因为android中每个界面都是一个activity组成的(Fragment也是运行在activity中的)。
多态,这个比较抽象也比较难解释,就像一个View,给它注册一个点击事件来说吧,系统用的只是一个接口,但是用户可以用一个实现接口的类来处理这个点击事件,这就是多态性,因为对于android来讲,它根本不知道用户会起个什么名实的类,它只要你实现它的接口即可。
参考技术A   继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确描述共性的方法,对象的一个新类可以从现有的类中的派出,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

面向对象之封装,继承,多态的理解

封装

1.什么是封装

  封装(encapsulation)又叫隐藏实现(Hiding the implementation)。就是只公开代码单元的对外接口,而隐藏其具体实现。

  其实生活中处处都是封装,手机,电脑,电视这些都是封装。你只需要知道如何去操作他们,并不需要知道他们里面是怎么构造的,怎么实现这个功能的。

2.如何实现封装

  在程序设计里,封装往往是通过访问控制实现的。C++,Java,AS3中都有 Public, Protected, Private 等访问控制符。通过用Public将信息暴露,Private,Protected将信息隐藏,来实现封装。

3.封装的意义

  a.封装使得对代码的修改更加安全和容易。将代码分成了一个个相对独立的单元。

  只要你电脑的接口不变,比如USB接口电源接口等,无论以后电脑怎么更新,再怎么强大,只要这些接口不变,你依然会使用电脑。

  封装所带来的好处是:明确的指出了那些属性和方法是外部可以访问的。这样当你需要调整这个类的代码时,只要保证公有(Public:)属性不变,公有方法的参数和返回值类型不变,那么你就可以尽情的修改这个类,而不会影响到程序的其他部分,或者是使用到这个类的其他程序。这就是为什么对代码访问控制得越严格,日后你对代码修改的自由就越大。

  b.封装使整个软件开发复杂度大大降低。

  能很好的使用别人的类(class),而不必关心其内部逻辑是如何实现的。你能很容易学会使用别人写好的代码,这就让软件协同开发的难度大大降低。

  c.封装还避免了命名冲突的问题。

  封装有隔离作用。电话上的按键和电视遥控器上的按键肯定用处不同。但它们都可以叫做按键,为什么你没有弄混呢?很显然一个属于电话类一个属于遥控器类。不同的类中可以有相同名称的方法和属性,但不会混淆。

 

继承

  核心思想不仅仅是重用现有的代码,用一些已有的类去创建新的类。

  继承的主要思想就是将子类的对象作为父类的对象来使用

  具体实例化一个例子来说,就是鸟作为父类,喜鹊作为子类,鸟包括喜鹊,喜鹊是鸟的一种。

 

复合

  提到了继承就必须提一下复合,复合是只将一些已有的类进行组合,组成新的类。

  程序设计中,复合体现在生成的新类里用到了现有类的实例。

  具体一个例子来说,汽车是由轮胎、发动机、玻璃这些内容组成的,这里我们先定义了轮胎、发动机、玻璃这些类,但是没有定义汽车类。那么现在我们定义汽车类的时候就只需要把轮胎、发动机、玻璃这些类拿过来进行组合就可以了。

 

何时用继承,何时用复合?

  在实际编程中,使用复合的频率要远远超过继承,对于新手而言,要慎用继承,勤用复合。

  a.需要用到向上转换时请考虑继承。

  b.当两个类进行组合时,如果可以拟定为次级的类拥有另一个类的属性的时候,即父子级关系的时候,用继承,否则拟定的次级的类不能完全当做另一类的属性来使用的话,就采用复合。举例来说就是鸟和麻雀;汽车和轮胎。

 

多态

  多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

多态的条件:

 

  一、要有继承;
  二、要有重写;
  三、父类引用指向子类对象。

多态的好处:

多态对已存在代码具有可替换性。

多态对代码具有可扩充性。

它在应用中体现了灵活多样的操作,提高了使用效率。

多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载

例:

package com.deng;

public class Deng {
    public void QiDong(){
        System.out.println("灯开");
    }
    public void GuanBi(){
        System.out.println("灯关");
    }
}
package com.deng;

public class DengGuan extends Deng {
    public void QiDong(){
        System.out.println("灯管开");
    }
    public void GuanBi(){
        System.out.println("灯管关");
    }
}
package com.deng;

public class DengPao extends Deng {
    public void QiDong(){
        System.out.println("灯泡开");
    }
    public void GuanBi(){
        System.out.println("灯泡关");
    }
}
package com.deng;

public class House {
    public void Kai(Deng d){
        d.QiDong();
    }
    public void Guan(Deng d){
        d.GuanBi();
    }
}
package com.deng;

public class Test {

    public static void main(String[] args) {
        House h =new House();
        DengPao dp = new DengPao();
        DengGuan dg= new DengGuan();
        
        h.Kai(dp);
        h.Guan(dp);
        
        h.Kai(dg);
        h.Guan(dg);
        
        
    }

}

输出结果为:

灯泡开
灯泡关
灯管开
灯管关

 

以上是关于Android里的封装,继承,多态,都是表现在哪里,都是有啥方法,有啥的主要内容,如果未能解决你的问题,请参考以下文章

《Python》 面向对象三大特性之多态封装

详细的解释下类的封装性,抽象性,继承性和多态性。

谈谈多态

Python 多态与封装

面向对象的三个特点:封装继承多态

Java的多态