黑马程序员_面向对象思想和特征

来源:互联网 发布:2016淘宝新规则 编辑:程序博客网 时间:2024/05/18 01:22

---------------------- android培训java培训、期待与您交流! ----------------------

一:面向对象思想
 (1)面向对象与面向过程区别和联系。
  A:区别:
   **面向过程关注执行过程,这个时候我们是执行者。
   **面向对象关注的是最终功能,这个时候我们是指挥者。
  B:联系:
   **面向对象是基于面向过程的。
 (2)面向对象
  A:面向对象思想的特点。
   **是符合人们思考习惯的一种思想。
    ***编程思想就是来源于生活。
   **将复杂的问题简单化了。
   **把我们从执行者变成了指挥者。
  B:举例
   **找个保姆帮我洗衣服做饭,那个保姆就是我面向的一个对象,我在调用他洗衣服做饭的功能
   **去饭店吃饭的时候我叫服务员帮我写菜单,那个服务员就是我面向的一个对象,我在调用他写菜单的功能
   **去旅游的时候,导游就是我们面向的一个对象,我们在调用他解说和指路的功能
  
 (3)面向对象思考问题的方式
  找对象,完成功能。
  如果对象不存在,自己就造一个对象。
 (4)面向对象的三大特性
  A:封装
  B:继承
  C:多态

 

二:封装


 (1)概念 把实现细节隐藏,提供公共的访问方法。
  机箱和主板的例子。
 (2)好处
  A:将变化隔离。
  B:便于使用。
  C:提高重用性。
  D:提高安全性。
 (3)private关键字
  A:private
   **私有的
  B:特点
   **是一个权限修饰符。
   **可以修饰成员,被修饰的成员只能在本类中访问。
  C:一般用法
   **一般用于将成员变量私有,提供公共的get,set方法进行访问。
  
  自定义类 一般格式:
  class Student
  {
   private String name;

   public void setName(String n)
   {
    name = n;
   }

   public String getName()
   {
    return name;
   }
  }

三:继承


 (1)概述
  A:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,
  那么多个类无需再定义这些属性和行为,只要继承那个类即可.
  B:多个类可以称为子类,单独这个类称为父类或者超类.
  C:子类可以直接访问父类中的非私有的属性和行为.
  D:通过extends关键字让类与类之间产生继承关系.
 (2)特点
  A:继承的出现提高了代码的复用性.
  B:继承的出现让类与类之间产生了关系,提高了多态的前提.
 (3)举例
  A:狗和猫都是动物的一种,所以就可以把狗和猫的共有的动物的属性抽取出来
    把狗和猫分别继承动物,在它们自己的类中定义特有的属性和行为,就不用
    定义公有的动物属性和行为(方法)
    这样就是继承的关系了.
 (4)研究继承后 Fu和Zi的关系。
  A:成员变量
   1:子类直接继承了本身没有的成员变量。
   2:当子类中有和父类同名的成员变量时。在方法中打印的是子类自己的。
   3:当子类方法中有局部变量和成员变量同名,在方法中打印的是局部变量。

   简单说:在子类方法中打印一个变量:
    先在局部范围找,其次在本类中找,最后在父类中找。如果找到,立马输出。
    如果找不到,就报错。

   为了访问父类的内容,java提供了一个关键字super。
   super:父类空间的一个引用。
 
  B:成员方法的特点
   继承中的成员方法的特点:
   1:父类的中的方法和子类中没有同名的情况。子类就把父类的方法直接继承过来使用。
   2:子类中存在了和父类同名的方法?怎么办呢?
    如果子类中有和父类同名的方法,就会去调用子类中的方法。
    而且这种现象在java中称为重写(override),复写,覆盖。
    同时回顾一下,我们前面讲过一种东西叫重载(overload)。

   重载与重写的区别:
    重载:
     **在同一个类中。
     **方法名相同,参数列表不同。
    重写:
     **存在于子父类当中。
     **方法的声明一致。(名称和参数)
     **子类的访问权限不能低于父类的访问权限。

   简单说:用子类对象调用方法时,首先子子类中找,其次在父类中找。如果找到,会直接操作。
      如果找不到,就报错。
 
   3:父类静态方法只能被子类静态方法重写。
      一般不会出现这种情况。

   注意:
     **父类中的私有方法不可以被覆盖。
     **在子类覆盖方法中,要想继续使用被覆盖的父类方法可以通过
      super.方法名获取。
      格式:super.方法名();
 
   
  C:构造方法
   子类中所有的构造函数默认都会访问父类中空参数的构造函数
   因为每一个构造函数的第一行都有一条默认的语句super();如果给定super(a);里面是带参的,那么就没有默认的了.
   子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的。

   当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super语句指定要访问的构造函数。

 (5)什么时候使用继承?
  A:当某个事物是另一个事物的一种的时候,就用继承。
  B:如果判断一个事物是另一个事物的一种?
     对于A类和B类。
     我们可以假设它们存在着继承关系。比如:A extends B
     如果A是B的一种,那么继承成立。他们就具有继承关系。否则,继承关系不成立。
 (6)super代表父类的内存空间的标识。
  A:当子父类出现同名成员时,可以用super进行区分
  B:子类要调用父类构造函数时,可以使用super语句。
 (7)1,:覆盖:
    (1)子类中出现与父类一模一样的方法时,就会调用子类中的方法,
       会出现覆盖操作,也称为重写或者复写。
    (2)父类中的私有方法不可以被覆盖。
   2,在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取。
   3,覆盖注意事项:
    (1)覆盖时,子类方法权限一定要大于等于父类方法权限
    (2)静态只能覆盖静态。
   4,覆盖的应用:
       当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,
       这样,即沿袭了父类的功能,又定义了子类特有的内容
 


三:多态


 (1)概述 不同情况下,事物的多种形态。
         水(固态,液态,汽态)
  狗(动物,狗,犬科)

  **静态多态(重载)
  **动态多态(对象多态)
 (2)特点
  在代码中体现是:父类引用指向子类对象。
  Fu f = new Zi();

  多态前提:
   **类与类(接口)存在着继承(实现)的关系
   **要有重写
   **父类(接口)引用指向子类对象
 (3)好处
  提高了代码的扩展性,便于后期的维护。
 (4)弊端
  前期不能考虑到后面有哪些对象,所以我们使用多态可以解决这个问题。
  但是,父类不能使用子类中特有的方法。

 ---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima