• 类与接口


    类与接口的关系: 实现关系 接口在类中允许多实现;多个接口之间用逗号个开

       接口是一个特殊类

    一个非抽象类是实现了的接口:必须实现接口中的所有方法

    一个抽象类实现接口:可以不实现接口中的方法,但是竭诚与它的类就必须实现接口中的方法。

      一个接口可以继承多个接口

    接口与接口的关系:

       接口与接口存在继承关系,一个接口存在多个继承

    多态: 一个类对象具有多种表现形态(父类的引用类型变量指向子类的对象)

     多态条件:

             1.必须存在继承

             2.必须要有方法的重写

      注意: 子父类存在同名的成员变量 ,默认访问父类中的成员

         1. 多态情况下子父类存在同名的非静态方法,访问的是子类的非静态方法

         2.多态情况下子父类存在同名的静态方法,访问的是父类的静态方法

         3.多态情况下:不能访问子类特有的成员变量

    总结: 多态情况下子父类如果存在同一个成员,访问的都是父类,除了同名的非静态方法访问子类(Java编译器的编译原理所致。)

    编译看左边,运行不一定看右边

      编译看左边:java编译器在编译的时候会检测引用类型中是否含有指定成员,如果没有就会报错。

    多态的使用场景:

         1.多态可以做形式参数,可以让方法接收更多的返回类型。

          2.多态用于返回值类型,可以返回多种数据类型。

    注意:

         不能用子类去接收返回值(父类),若要用子类接收返回值则要强制转换。

    多态的另一种表现形式:

         接口的引用类型指向实现类。(多态的另一种表现形式)

    实现关系下的多态:

       接口(接口不能够创建对象 变量 =  new  接口实现对象

    内部类: 一个类中可以定义另外一个类。

    内部类的文件名: 外部类名$符号链接内部类名。

    内部类分两种:

        1.成员内部类:

           如何访问成员内部类:

               1.在外部类中定义一个方法,然后通过内部类对象,再通过对象进行访问。

               2.直接在其他类中直接创建内部对象然后通过对象访问

          格式:  外部类.内部类 变量名 = new 外部类().new 内部类();

          内部类使用的注意点:

             1.如果外部类和内部类存在同名的成员变量,在内部类中java虚拟机默认访问内部类中的成员变量,若要访问外部类就必须用 外部类.this

             2.如果内部类中的成员变量被private修饰了,这个时候就只能方式一来修饰

             3.如果内部类中有静态便量static修饰那么这个类也必须是静态的。

       好处:

            内部类可以直接外部类的所有成员。

    一般什么时候使用内部类:

         我们在描述一个A对象,发现A对象中有需要有一个对象B很复杂,B对象又要访问A中的数据,这时用内部类来描述B对象就很方便。

           

    2.局部内部类:

        在类的方法中定义的类,这样的一个类叫局部内部类。

        局部内部类只能通过第一种方式来访问。

    注意:

      1.局部内部类访问了方法中的局部变量,方法中的局部变量用final来修饰。

    匿名内部类:

       没有类的类就叫匿名内部类。

    好处:  简化书写

    匿名内部类只是没有名字,其他的和普通类没有区别。

    使用前提:

            1.外部类必须有继承或实现关系。

               

  • 相关阅读:
    基于docker的MongoDB复制(副本集)
    (已解决)ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib
    【洛谷3530】[POI2012] FES-Festival(差分约束+Tarjan)
    【洛谷4765】[CERC2014] The Imp(贪心+DP)
    【洛谷7093】[CERC2014] Can't stop playing(搜索)
    【CF755G】PolandBall and Many Other Balls(倍增FFT)
    【洛谷3896】[湖南集训] Clever Rabbit(搜索)
    【洛谷7215】[JOISC2020] 首都(点分治+BFS)
    【BZOJ4173】数学(欧拉函数)
    【洛谷5748】集合划分计数(多项式exp)
  • 原文地址:https://www.cnblogs.com/vn-6666/p/6134698.html
Copyright © 2020-2023  润新知