黑马程序员_Java面向对象

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------- -------------
面向对象是基于面向过程的一种思想。
          面向过程:以函数为过程,关注实现过程。
          面向对象:以对象为基础,关注实现结果。
 
面向对象的思想特点:
            A:是一种更符合人们思考习惯的思想。
            B:把复杂的事情简单化了。
            C:把我们从执行者编程了指挥者。

面向对象三要素是:封装、继承、多态。

一:封装:
                封装就是事物抽象为类,把对位接口暴露,将实现和内部数据隐藏。
             (1):隐藏实现细节,提供公共的访问方式。
                     类,方法等其实都是封装的具体体现。
             (2):private关键字
                         A:用于修饰成员变量和成员方法。
                         B:被修饰的内容在其他类中是不可以被访问的。
               (3)常见的应用:
                         类中的所有成员变量私有,给出对应的get/set方法。
代码体现如下:

            class Student
            {
                  private String name;
                  private int age;
                  public Student(){}

               public Student(String name,int age)
                {
                           this.name = name;
                           this.age = age;
                }
                public void setName(String name)
                {
                         this.name = name;
                }
                public String getName()
                {
                         return name;
                }
                public void setAge(int age)
                {
                       this.age = age;
                }
               public int getAge()
                {
                      return age;
                }
         }

2:构造方法:
       (1)格式及特点
           格式:
              访问权限修饰符 类名(参数...){}

       访问权限修饰符:
             public,private
       特点:
          A:方法名和类名相同
          B:没有返回值类型
          C:没有具体的返回值

        (2)注意事项:
             A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
             B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
             这个时候,你如果要使用无参构造方法:只能自己提供

3:this关键字:
            (1)是一个关键字。代表当前类的引用。
                   简单记:在方法中,哪个对象调用方法,this就代表谁。
            (2)应用场景:
                    解决局部变量隐藏成员变量问题。

4:static关键字:
            (1)是一个关键字。可以修饰成员变量和成员方法。
 
            (2)静态的特点:
                  A:随着类的加载而加载
                  B:优先于对象存在
                  C:被类的所有对象共享
                  D:可以通过类名调用
            (3)静态的注意事项:
                  A:在静态方法中是没有this关键字的。
                  B:静态方法只能方法静态的成员变量和静态的成员方法。
 
            (4)静态内容的调用:
                   A:被对象调用
                   B:被类名调用
            (5)什么时候该用static呢?
                   如果某个内容是所有对象共享的,就用静态修饰。

二:继承:
           (1)把多个类中的相同的属性和行为进行抽取,封装到一个类中,
             然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。

          (2)好处:
               A:提高代码的复用性。
               B:让类与类之间产生了一个关系,是多态的前提。

          (3)什么时候使用继承?
                 A:如果类之间存在着:
                       is a 的关系,就可以考虑使用继承。
                 B:不要为了继承部分功能,而去使用继承。

           (4)继承的特点:
                  A:Java只支持单继承,不支持多继承。
                       为什么?如果支持多继承,就会有调用不明确的问题。
                  B:Java支持多层(重)继承。

            (5)super和this的区别?
                   A:super是一个关键字,代表父类的存储空间标识。(可以理解为父亲的引用)
                   B:它和this的用法相似
                         a:成员变量
                               this.变量 -- 本类的
                               super.变量 -- 父类的
                         b:构造方法
                               this(...) -- 本类的
                               super(...) -- 父类的
                         c:成员方法
                                this.方法名() -- 本类的
                                super.方法名() -- 父类的

          (6)子父类中成员变量的用法:
                  A:名称不同,这个太简单了。
                  B:名称相同,子类对象的在使用的时候:
                     先找子类局部范围
                     再找子类成员范围
                     最后找父类成员范围

           (7)子父类中成员方法的用法:
                 A:名称不同,这个太简单了。
                 B:名称相同,子类对象的在使用的时候:
                  先找子类的
                  再找父类的
                 C:方法重写
                      在子类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况。

注意事项:
         a:父类中私有方法是不能被重写
         b:子类方法的访问权限一定要大于等于父类的访问权限
         c:静态只能重写静态。(这个不能算,因为静态跟类相关)

        (8)子父类中构造方法的用法:
              A:子类的初始化过程中,首先回去执行父类的初始化动作。
                  因为子类的构造方法中默认有一个super()。
         为什么?子类要使用父类的成员变量,这个初始化,必须在子类初始化之前完成。
             所以,子类的初始化过程中,会先执行父类的初始化。
            B:如果父类没有无参构造方法
            A:使用super调用父类的带参构造。推荐方式。
            B:使用this调用本身的其他构造。

三:多态:
       (1)对象在不同时刻表现出来的不同状态。
            举例:水(冰,水,水蒸气)
       (2)多态的前提
            A:要有继承或者实现关系。
            B:要有方法的重写。
            C:要有父类引用或者父接口引用指向子类对象。

       注意:多态有三种体现形式
             类多态
             抽象类多态
             接口多态
(3)多态中的成员特点:
          A:成员变量
              编译看左边,运行看左边。
          B:成员方法
              编译看边,运行看右边。

        为什么?因为方法存在重写,而变量没有。

(4)多态的弊端:
         父类(接口)引用不能使用子类特有功能。
         为了解决这个弊端,我们需要向下转型。

         Fu f = new Zi(); //向上转型
         Zi z = (Zi)f; //向下转型
 
         Zi z = new Zi();
 
(5)多态的好处:
             可以提高代码的扩展性和可维护性。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------- -------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值