• 面向对象三大特性:封装,继承,多态(一,封装和继承)


    封装、继承和多态是面向对象程序设计的三个核心特性。

    1. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想。
    2. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂、更深入的程序开发。
    3. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易。

    一、封装

    1.   封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,也不能对类中非公共的数据进行操作。这样可以防止外部的干扰和误用。
    2.   封装的目的:在于将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只须用设计者提供的接口来访问对象。同时减少了程序各部分之间的依赖性,降低了程序的复杂性,由于隐藏了其内部信息的细节,使内部信息不易受到破坏,安全性有了保证,同时也为外界访问提供了简单方便的界面。
    3.   封装的实现:JAVA定义了4种访问权限:public (公有的)、protected(保护的)、private(私有的)和默认的(默认的就是包访问权限package)

        3.1 public (公有的)

        用public修饰的类成员(包括变量和方法)称为公有的,公有成员允许JAVA系统中所有的类访问,即不公类内部的成员可以访问,类外部的同一个包或者不同包的类也可以直接访问。

        3.2  private(私有的)

        用private修饰的类成员称为私有的,类的私有成员只能被这个类的方法直接访问。如果想要获取一个类中私有变量的值,可以通过类中定义的get()方法来获取。一般把不需要外界知道的数据声明为私有,这样有利于数据的安全性,也符合程序设计中隐藏内部信息处理细节的原则。

        3.3 protected(被保护的)

        用protected修饰的类成员为被保护的,允许其所归属的类(父类)、由此派生的类(子类)以及同一个包中的其他类访问。

        3.4 默认的(package)

        如果类成员前面没有任何关键字修饰,则称为默认的。默认的类成员除了允许被其归属的类访问外,还允许同一个包中的其他类访问。若两个类不在同一个包中,即使是这个类的子类,也不允许访问。

      


     

    二、继承 

      继承是一种由已有类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类。新类继承一般类的状态和行为,并根据需要增加它自己的状态和行为。

      从现有类出发定义一个新类,称为新类继承了现有的类,其中被继承的现有类叫做超类(superclass)或父类,由继承而得到的类称为子类(subclass)。

      Java中规定,一个父类可以同时拥有多个子类,但一个子类只能有一个父类,即单重继承,而且允许多层继承,即子类还可以有它自己的子类,在下一层的继承关系中原先的子类就变成了父类。这样的继承关系就形成了继承树。

    1、类继承用关键字extends实现,格式为:

    class 子类名extends 父类名{子类的类体}

    如果没有extends子句,则这个类直接继承Object。

      2、成员变量的继承

      子类继承父类中所有可被子类访问的成员变量。继承原则如下:

    2.1    能够继承那些声明为public和protected的成员变量。

    2.2    能够继承同一包中的那些默认修饰符的成员变量。

    2.3    不能继承那些声明为private的成员变量。

    2.4    如果子类声明一个与父类成员变量同名的成员变量,则不能继承父类的成员变量。此时子类的成员变量称做隐藏了父类的成员变量。

      总之,子类可继承父类的public、protected和默认修饰变量,不能继承private变量。反之,如果父类不允许其子类访问它的某些成员,那么它必须以private方式声明该成员。这一点充分体现了类封装的信息隐蔽原则。

    3、成员方法的继承

      

      子类继承成员方法的规则类似于继承成员变量的规则:子类继承父类中所有可被子类访问的成员方法。继承规则如下:

    3.1    能够继承那些声明为public和protected的成员方法。

    3.2    能够继承同一包中的默认修饰符的成员方法。

    3.3    不能继承那些声明为private的成员方法。

    3.4    不能继承父类的构造方法。

      如果子类方法与父类方法同名,则不能继承。子类方法称为覆盖了父类中的那个方    法。

      总之,子类可继承其父类的public、protected和默认修饰方法,不能继承private方法。子类除了可以继承父类中的变量及方法,还可以增加自己的成员。当一个父类成员不适合该子类时,子类会重新定义它,如果是重新定义的是成员变量就是隐藏父类的变量,如果是成员方法就是覆盖父类的方法。

      4、重写  

      重写是指在继承过程中,子类中的成员(包括数据和方法)与其父类中的成员同名,但功能不同,此时,子类的成员“覆盖”从父类继承过来的成员。包括两种情况:一是数据覆盖,称为数据隐藏,即父、子类中数据成员的名称相同,类型不同,它们实际上是完全不同的两个数据;二是方法覆盖,称为方法重写,即父、子类中方法的名称相同,参数表也完全相同,但功能不同。

        在数据隐藏和方法覆盖后,子类成员覆盖了父类的同名成员,要访问父类的这些成员,需用super关键字来引用当前类的父类。super的用法有3种情况:

        4.1  super.变量名:访问父类中被隐藏的成员变量。

        4.2  super.方法名([参数表]):调用父类中被重写的方法。

        4.3  super([参数表]):调用父类的构造方法,此时,可用super来表示父类的构造方法。

     

  • 相关阅读:
    scanf的参数类型自动转换
    Gedit中文乱码
    在VirtualBox的Ubuntu虚拟机中与母体Windows共享文件夹
    Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage
    贝叶斯后验概率小记
    美国计算机专业最好的前20名学校
    Linux磁盘空间不够怎么办?
    Debian6.0装机过程
    把用户加到sudoers组中的方法
    vi命令手册
  • 原文地址:https://www.cnblogs.com/livterjava/p/4736933.html
Copyright © 2020-2023  润新知