JAVA面向对象三大特征

来源:互联网 发布:巨人网络借壳a股上市 编辑:程序博客网 时间:2024/04/26 12:15
面向对象三大特征:封装、继承、多态
封装: 将对象具有的成员变量和成员函数包装和隐藏起来,让外界无法直接使用。
被封装的成员只能通过某些特定的方式才能访问。
实现方式:属性私有,行为公开
1、将不能暴露的成员隐藏起来,我们就不能让其在类的外部被直接访问或赋值。 
      实现方法是将该成员定义为私有的,在成员定义前加上private访问权限修饰符。 
    2、用公共方法来暴露对该隐藏成员的访问,可以给成员加上public修饰符,将该成员定义为公共的 


 
继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。 
对象的一个新类可以从现有的类中派生。 
   1.为什么要使用继承? 
    a.提高程序的扩展性。 
    b.提高了代码的重用性。 
     
   2. 子类能继承到父类的那些方法和属性 
    第一种:所有的属性和方法都被子类继承到了。 
    第二种: 
    a、子类和父类在同一个包下: 
    公有的受保护的属性和方法被子类继承到了。 
    b、子类和父类不在同一个包下: 
    公有的方法和属性被子类继承到了。 
     
   3. 子类的对象能调用父类的那些方法和属性? 
    a、子类和父类在同一个包下: 
    公有的受保护的属性和方法能被子类调用。 
    b、子类和父类不在同一个包下: 
    公有的方法和属性能被子类调用。 
    在类和抽象类中,默认的就是受保护的。 
    在接口中,默认的就是公有的。
多态:
* 1. Java中除了static和final方法外,其他所有的方法都是运行时绑定的。 

* 2. 构造方法是被隐式声明为static方法。
 
* 3. 动态绑定 
  *  将一个方法调用和一个方法主体连接到一起称为绑定(Bind)。  
  *  根据绑定的时机不同,可将绑定分为“早期绑定”和“后期绑定”两种。  
  *  如果在程序运行之前进行绑定(由编译器和链接程序完成),称为早期绑定或“编译期绑定”。  
  *  如果在程序运行期间进行绑定,称为后期绑定,后期绑定也称为“动态绑定”或“运行时绑定”。  
*  在Java中,多态性是依靠动态绑定实现的,即Java虚拟机在运行时确定要调用哪一个同名方法。  
 
*  4. 多态总结 
*      一、使用父类类型的引用指向子类的对象 
*      二、该引用只能调用父类中定义的方法和变量 
*      三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候, 
*          将会调用子类中的这个方法;(动态连接、动态调用) 
*      四、变量不能被重写(覆盖),“重写”的概念只针对方法, 
*          如果在子类中“重写”了父类中的变量,那么在编译时会报错。 
*  5. 多态详解 多态是通过:  
*      5.1 接口 和 实现接口并覆盖接口中同一方法的几不同的类体现的。
*      5.2 父类 和 继承父类并覆盖父类中同一方法的几个不同子类实现的。

*  6. 一个类型引用只能引用引用类型自身含有的方法和变量。
多态可分为:
1.编译多态:主要是体现在重载,系统在编译时就能确定调用重载方法的哪个版本。
2.运行多态:主要体现在面向对象设计的继承性上,子类的对象也是父类的对象,即向上造型,所以子类对象可以作为父            类对象使用,父类的对象变量可以指向子类对象。因此通过一个父类发出的方法调用可能执行的是方法在父类中的实现,也可能是某个子类中的实现,它是由运行时刻具体的对象类型决定的。


重载:
    (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
重载Overload是一个类中多态性的一种表现。
    (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
    (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载方法的区分标准。
重写:
    (1) 父类与子类之间的多态性,对父类的方法进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
    (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
    (3)子类方法的访问修饰权限不能小于父类的;


    多态性是面向对象编程的一种特性,和方法无关,
    同样的一个方法能够根据输入数据的不同,做出不同的处理,即方法的
    重载——有不同的参数列表(静态多态性)


   而当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法,
    即在子类中重写该方法——相同参数,不同实现(动态多态性)
1 0
原创粉丝点击