黑马程序员_面向对象 封装、继承、多态

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


面向对象

1、面向对象思想:

    (1)概述:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对象,

         强调具备功能的对象;

    (2)思想特点:

         A:是符合人们思考习惯的一种思想;

         B:将复杂的事情简单化了;

         C:将程序员从执行者变成了指挥者;

 

         比如我要达到某种结果,我就寻找能帮我达到该结果的功能的对象,如我要洗衣服我就买洗衣机,

         至于怎么洗我不管。

    (3)特征:

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。比如电脑机箱、笔记本等

            好处:

                将变化隔离;

                方便使用;

                提高复用性;

                提高安全性

关键字private:封装在代码中的体现

                (1)私有的意思,权限修饰符

                (2)用来修饰成员变量和成员函数

                (3)用private修饰的成员只在本类中有效

                (4)私有是封装的一种体现

 

        继承: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义

              这些属性和行为,只要继承那个类即可。

 

        多态:同一个对象,在程序不同时刻的多种运行状态。举例:动物,狗是狗,狗是动物。

        多态前提

        A:存在着继承或者实现关系

        B:有方法的重写 

        C:父类(接口)引用指向子类(实现)对象

        多态的好处和弊端:

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

        弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。

              不能预先使用子类中定义的特有功能。

        多态中对象调用成员的特点

            Fu f = new Zi();

       

        A:成员变量

            编译看左边,运行看左边

        B:成员方法

            编译看左边,运行看右边

        C:静态方法

            编译看左边,运行看左边

        多态的思想:

            指挥同一批对象做事情。举例:带兵打仗,下课等。

 

2、类和对象:

    类:对现实世界中某类事物的描述,是抽象的,概念上的定义。

    对象:事物具体存在的个体。(万物皆对象)

 

3、内部类(次重点)

    (1)把一个类定义在某个类中的,这个类就被称为内部类,内置类,嵌套类。

    (2)访问特点:

        A:内部类可以直接访问外部类中的成员,因为内部类持有外部类的引用,

          格式为:外部类名.this

        B:外部类要想访问内部类的成员,必须创建对象访问。

    (3)内部类的访问格式:

        A:当内部类定义在外部类的成员位置,而且非私有,则可以在其他外部类中直接建立内部类对象

          格式:外部类名.内部类名  变量名= new 外部类对象.内部类对象

            如:Outer.Innerin = new Outer().new Inner()

        B:当内部类在外部类成员位置,且被static修饰时

            **外部其他类可直接访问静态内部类的非静态成员

              格式:new 外部类名.内部类名().内部类成员

              如:new Outer.Inner().function();

            **外部其他类可直接访问静态内部类的静态成员

              格式:new 外部类名.内部类名.内部类成员

              如:new Outer.Inner.function();

    (4)什么使用时候内部类呢?

        假如有A类和B类,A类想直接访问B类的成员,B类访问A类成员的时候,

        需要创建A类对象进行访问,这个时候,就可以把A类定义为B类的内部类。

 

class Outer{   

private static int num = 31;

class Inner // 内部类。

       {     void show(){

                     System.out.println("showrun..."+num);

              }/*staticvoid function() //如果内部类中定义了静态成员,该内部类也必须是静态的。

              {     System.out.println("function run...."+num);

              }*/

       }publicvoid method(){ 

Inner in = new Inner();

              in.show();

       }

}

class InnerClassDemo

{     publicstatic void main(String[] args){

//            Outerout = new Outer();

//            out.method();//直接访问外部类中的内部类中的成员。

//            Outer.Innerin = new Outer().new Inner();

//            in.show();//如果内部类是静态的。 相当于一个外部类

//            Outer.Innerin = new Outer.Inner();

//            in.show();//如果内部类是静态的,成员是静态的。

//            Outer.Inner.function();

       }

}

 

    (5)内部类的位置

        A:成员位置

            **可以被private修饰(Body,Heart)

            **可以被static修饰。(它访问的外部类的成员必须是静态的)

        B:局部位置

            **可以直接访问外部类中的成员,因为还持有外部类的持用

            也可以直接访问局部成员,但是局部成员要用final修饰。     

        注意:局部内部类不能用private和static修饰    

    (6)通过class文件我们就可以区分是否带有内部类,以及内部类的位置

        Outer$Inner:成员内部类

        Outer$1Inner:局部内部类

4、匿名内部类(局部内部类的简写) (重点)

        (1)前提:继承一个类或者实现一个接口

        (注意不要弄混匿名内部类的前提和多态的前提)

        (2)格式:

            new 父类名或者接口名()

            {

                重写父类方法或者实现接口中的方法。

                也可以自定义其他方法。

            };

        (3)什么时候定义匿名内部类?

            匿名内部类只是为了简化书写,匿名内部类有局限,通常定义匿名内部类时,该类方法不超过3个

        (4)匿名内部类的好处和弊端:

            好处:简化代码书写

            弊端:

                不能直接调用自己的特有方法

                不能执行强转换动作

                如果该类里面方法较多,不允许使用匿名内部类

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值