面向对象,封装,继承

学习目标:

   1.this关键字

   2.static关键字

   3.封装性

   4.继承性

   5.super关键字

   6.四种访问权限

   7.方法重写

 

A.this关键字

     a.每个类的每个非静态方法(没有被static修饰)都会隐含一个this

       引用名称,它指向调用这个方法的对象(当前对象)

     b.当在方法中使用本类的非static属性时,都会隐含地使用this名称

     c.this可以看作是一个变量,它的值就是当前对象的引用

     d.this关键字

        (1)当类中某个非静态方法的参数名跟类的某个成员变量名相同

             时,为了避免参数的作用范围覆盖了成员变量的作用范围,

             必须明确地使用this关键字来指定成员变量

       (2)如果某个构造方法的第一条语句具有形式this(...)必须放

            在该构造方法的第一行),那么这个构造方法将调用本类中的

            其他构造方法                 


            

                      

B.static关键字

     a.在类中,用static声明的成员变量为静态成员变量,它是该类的公

       用变量,对于该类的所有对象来说,static成员变量只有一份

     b.用static声明的方法为静态方法,该方法独立于类的实例,所以也

       叫类方法

       ·静态方法中只能直接调用本类中其他的静态成员(变量和方法)

       ·静态方法中不能使用this和super关键字

     c.静态成员可以通过类名(不需要实例化)或类的实例去访问

                      


                             

                                

     d.static静态代码块

        (1)在类中可以使用不包含在任何方法中的静态代码块

             (static block),当类被JVM载入时,静态代码块被执行,

             且只被执行一次

        (2)静态代码块经常用来初始化类的静态成员变量

             static{

                 // 静态代码块内容

             }

             


              

              

C.面向对象的三大特性

     a.封装(Encapsulation)

       ·对外部不可见,隐藏对象的属性和实现细节。

       ·封装的好处:隐藏类的实现细节,让使用者只能通过程序员规

         定的方法来访问数据,可以方便的加入存取控制语句,限制不

         合理操作。

     b.继承(extends)

       ·代码的重用

       ·扩展类的功能

     c.多态(Polymorphism)

       ·对象的多态性

D.封装性(Encapsulation)

     a.封装性体现

       (1)类的封装(属性、方法都存在于某个类中)

       (2)对字段的封装

            ·字段设置为私有(private)

            ·添加get /set 方法

       (3)访问修饰符的限制,保证数据的安全

                                    


                                      

                                     

                                            

***单例设计模式(重要)

     1.私有化构造方法

     2.在类的内部实例化该类的对象,该类的对象必须是static全局变量

     3.编写获取该单例对象的static方法

      “饿汉式”单例模式:当类加载到JVM时,单例对象直接创建;

      “懒汉式”单例模式:当类加载到JVM时,并不直接创建单例对象,

        用户请求单例对象时(用户需要使用时),才实例化该单例对象;

      

        

         

         

              

E.继承性(extends)

     a.继承是一个类继承另一个类.这个类拥有父类可以被继承的成员

     b.继承是面向对象特征之一

     c.实现继承的类称为子类也叫派生类,而被继承的类称为父类,也叫

       超类或基类

     d.类的方法和属性可以被继承

       ·私有的属性和方法不能被继承

       ·构造方法不能被继承,但是可以间接的通过super关键字去访

         问父类的构造方法

     e.继承的好处

       ·实现代码的重用和扩展

       ·模拟现实世界的关系

       ·结构更清晰

     f.继承具有传递性

     g.单继承性

       ·在java中一个类只能有一个父类,这就是Java的“单继承性”

       ·java.lang.Object类是所有类的父类  

     h.使用继承

       ·要继承一个类,可以使用extends关键字,意味着扩展父类的

         功能

       ·类继承的基本语法:

         

     i.类的继承示例

       ·通过继承,简化Student类的定义

           

 

F.super关键字

     a.在Java类中使用super来引用父类的成员

       ·super可用于访问父类中定义的属性

       ·super可用于调用父类中定义的成员方法

       ·super(…)可用于在子类构造方法中调用父类的构造方法

     b.super关键字---示例1

       ·使用super调用基类的属性

           

     c.super调用父类构造方法

       ·创建子类对象会先调用基类的构造方法,默认调用基类无

         参构造方法

       ·要调用基类其他带参构造方法,则使用super

     d.super关键字---示例2

       ·使用super调用基类中构造方法

           

     e.使用super关键字注意事项:

       ·当子类和父类都有同名的属性时,在子类中如果要使用父类

         的属性 super.属性

       ·super只能应用在成员方法和构造方法中,不能应用在静态

         方法中(和this是一样的)

       ·如果在构造方法中使用必须放在第一行

       ·在构造方法中this()super()不能同时出现

    f.常见错误

         

    g. eg:

                             


                              

                             

                                    

    h.this和super关键字对比

          

        *** thisstatic都不能在static方法中调用

G.四种访问权限

    a.对类中的属性和方法的可见度

    b.访问修饰符

       ·private

       ·[default]:包级别访问权限

       ·protected

       ·public

    c.访问权限

       ·在Java中,可以在类、类的属性以及类的方法前面加上一个

         修饰符(modifier),来对类进行一些访问上的控制

      (1)类的访问修饰符

           ·public:任何包中的类都可以访问该类

           ·默认值:同一个包中的类可以访问该类

      (2)成员的访问修饰符

           ·private:只对本身类可见

           ·默认值:对同一包中的类可见

           ·protected:对跨包的子类和同一包中的类可见

           ·public:对一切类可见

      注意:访问成员的前提是首先能访问成员所属的类

         

      注意: [default],public也可以用来修饰一个类,但是protected

            不能修饰一个类

    d.权限访问---示例

       ·控制权限的例子:

        

H.方法重写(override)

    a.定义:当子类继承父类时,可以从父类继承它的属性和方法,如

            果从父类继承的方法不能满足子类的需求,可以对其进行

            改写,这个过程叫做方法的重写(override)

    b.重写规则

        *重写的注意事项(三要素):

          1.只能存在于子类和父类之间

          2.子类的方法名称、输入参数和返回值类型完全一致或子类

            方法返回值类型是父类方法返回值类型的子类

          3.权限不能比父类方法更加严格

       注意:重写的前提是先继承了父类的方法

    c.方法的重写---示例

       

       

               

    d.对比重写和重载

           

    e.方法重写注意事项

        (1)在JDK1.5之后,重写方法的返回值类型可以和父类中的

             方法返回值类型兼容 (引用类型之间)

        (2)如果子类中成员变量、静态变量、静态方法 和父类中

            成员变量、静态变量、静态方法相同,这种情况不是重写,

            可以认为是隐藏,只有非static成员方法之间才是重写

    f.eg:

         

         

         

            

        

       

            

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值