黑马程序员--四、面向对象

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------------------

面向对象简单理解

人们解决现实中问题的一种思维模式,思想
  万物皆对象
  日后开发:当你想完成一个功能的时候,找有没有可以完成这个功能的对象
      如果有的话,就建立这个对象,指挥这个对象做事情
      如果没有,就自己创建对象,指挥这个对象做事情。

想要更好的理解面向对象,首先要了解什么是类?什么是对象?以及类与对象之间的关联关系!


  是描述现实中对象的抽象,类就是描述对象的。
  比如:动物、人、笔。。。。都是一些类,是不具体的,抽象化的

对象

对象就是现实生活中,确确实实存在的那个个体

比如:狗,小明,钢笔。。。。这些都是一些具体的东西。

而对象都有自己的属性和行为(方法),比如人:具有:姓名、年龄、性别等属性,

 具有:睡觉、吃饭、学习等行为。

两者之间的关系:

  比如:建筑物的图纸和建筑物实物的关系,通过一个类可以创建多个对象。

面向对象的优点:设计

      其实面向对象就是采用“现实模拟”的方法和开发程序,面向对象技术利用“面向对象的思想”去描述面向对象的
     世界,实现啦虚拟世界与现实世界的一致性,非常符合人们的思维习惯,使得客户和软件开发人员之间内部
     交流更加顺畅,同时还带来了代码重用性高、可靠性高等优点,大大提高了软件尤其是大型软件的设计和开
     发效率。

面向对象和面向过程的区别:

   面向对象的核心设计是封装啦属性和方法(行为)的类,以数据为中心,实现啦类级别的代码重用,面向对象
   因为采用了类,具有继承和多态特性,可以进一步重用代码和简化编程,而面向过程中没有继承和多态特性。
   面向过程的主要核心概念是函数,以功能为中心,实现啦函数级别的代码重用。

面向对象设计程序:
 
    面向对象设计的过程就是抽象的过程。
    第一步:发现类
    第二步:发现类的属性
    第三步:发现类的方法

面向对象的的三大特征

         一、 封装(encapsulation):

          就是将类的状态信息隐藏在类的内部,不允许被外部的程序直接访问,
          而是必须通过该类对外提供的方法来实现对隐藏信息的操作和访问。
          
           封装类的具体步骤:
           1.修改类属性的可见性来限制对属性的访问。
           2.为每个属性,创建一对对外公开的(getter)和(setter)方法
           3.在getter和setter方法内部还可以加入对属性的控制语句

   封装的好处

  1.    隐藏啦类的具体实现细节,
  2.    限制不合理操作。
  3.   将变化隔离。
  4.   便于使用。
  5.   提高重用性。
  6.   提高安全性。

     提到封装,必须想到方法间的访问修饰符,用来限定属性和方法的访问范围。它们之间的区别如下:
      private :成员方法和成员变量只能在本类内方访问,具有类可见性
      默认:    成员方法和成员变量只能被同一个包里面的类访问,具有包可见性
      protected:可以被同一个包中的类访问,被同一个项目不同包中的子类访问。
      public :    可以被同一个项目中的所有类访问,具有项目可见性,这是最大的访问权限
     
     二、继承(inheritance):
      多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,
     那么多个类无需再定义这些属性和行 为,只要继承单独的那个类即可。
     子类继承父类,通过extends
      语法格式:
      [修饰符] class 类名 extends 父类名
    
   继承的好处 
       1. 继承的出现提高了代码的复用性。
      2.继承的出现让类与类之间产生了关系,提供了多态的前提。


   多态(polymorphism):

       定义:某一类事物的多种存在形态,是具有表现多种形态的能力的特征,更加专业的说法就是,同一个实现接口,使用不同的实例而执行不同的操作。


体现:

父类或者接口的引用指向或者接收自己的子类对象。


作用:

多态的存在提高了程序的扩展性和后期可维护性


前提:

  1.需要存在继承或者实现关系

  2. 要有覆盖操作


子类到父类的转换(向上转型)

      1.讲一个父类的引用指向子类对象,成为向上转型。自动进行类型转换。

                  2.此时通过父类的引用变量调用的方法时子类覆盖的或者继承的父类的方法,而不是父类的方法。

                3.此时通过父类引用变量无法调用子类特有的方法。


           父类到子类的转换(向下转型)

                讲一个子类的对象的父类引用赋给一个子类的引用,称之为向下转型。这时候必须进行强制类型转换。

                向下转型后,可以调用子类特有的方法。

            

        接口

          接口和类、抽象类是一个层次的概念,命名规则都相同。

          小细节

          接口中所有的方法都是抽象的
           所有的成员必须公共的,默认的访问修饰符也是共有的
           接口中没有构造方法,故不能创建对象
           接口中的变量都是常量


继承和实现有区别

       类与类之间单继承
       类与接口之间多实现  class D extends C implements A,B
       继承父类后,父类中的非抽象方法,子类可以直接使用啊
      实现后,必须覆盖所有抽象方法
      多实现,避免了单继承的局限性


抽象类和接口的区别

  •   |-- 抽象类需要子类继承覆盖全部抽象方法
  •   |-- 接口需要子类实现覆盖全部抽象方法


  •   |-- 抽象类中可以有普通方法,子类继承后直接使用
  •   |-- 接口中没有普通方法,子类实现后必须全部覆盖


  •   |-- 抽象类中有构造方法,可以对成员变量赋值
  •   |-- 接口中没有构造方法,定义的都是常量


  •   |-- 抽象类中,可以定义普通方法和成员变量
  •   |-- 接口中,只能定义常量和抽象方法



----------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值