• Java Day 10


    接口应用
     
    多态
     猫 x = new 猫();
     动物 x = new 猫();
     
     父类或接口的引用指向其子类的对象

     1 class BookPC{
     2     public static void main(String[] args){
     3         useUSB(new UPan());
     4     }
     5     public static void useUSB(USB u){
     6         u.open();
     7         u.close();
     8     }
     9 }
    10 
    11 class Mouse{
    12     
    13 }
    14 
    15 interface USB{
    16     public void open();
    17     public void close();
    18 }
    19 
    20 class UPan implements USB{
    21     public void open(){
    22         System.out.println("UPan open");
    23     }
    24     public void close(){
    25         System.out.println("UPan close");
    26     }
    27 }


     
    好处 提高代码复用性

    弊端
     前期定义的内容不能使用后期子类特有的内容
     
     多态的前提:
     1、必须有关系,继承、实现
     2、要有覆盖
     
    多态--转型
     动物 x = new 猫();//自动类型提升,特有的功能无法访问;向上转型
     猫 c = (猫)x;//向下转型
     
    多态--类型判断 instanceof
     用于向下转型前的判断
     
    多态--成员特点 编译看等号左边
     1、成员变量
      父类有就获取,无则编译失败
     2、成员函数
      子类有就覆盖,无则获取父类的
     3、静态函数
      静态不存在覆盖,也就不涉及多态;对象才有多态,静态方法属于类
     
    内部类--应用于设计
     1、内部类可以直接访问外部类中的成员 包括私有的
     2、外部类访问内部类,则需要建立内部类对象
     
     编译后,查看class文件
     
    内部类--修饰符
     Outer.Inner in = new Outer().new Inner();
     Static Outer.Inner in = new Outer.Inner();
     当内部类成员有static修饰,则内部类也要加static
     
    细节
     Outer.this.num
     为什么内部类能直接访问外部类中的成员呢?
     因为内部类持有外部类的引用 外部类名.this
     
    局部内部类--方法中
     内部类访问局部变量,局部变量需要被声明为final

    匿名内部类
     内部类必须继承或实现一个外部类或接口
     其实就是一个匿名子类对象
     new 父类 or 接口 (){ 子类内容 }
     
    应用
     当函数参数是接口类型时,且接口中的方法不超过3个,可以用匿名内部类作为实际参数进行传递。
     
    细节
     主函数直接new Inner//为什么
     匿名内部类如果使用父类进行显示赋予引用变量,那么再用变量去调用子类方法则编译失败。
     
    带继承的子类对象初始化
     1、成员变量默认初始化
     2、调用子类构造器
     3、调用父类构造器
     4、成员变量显示初始化
     5、构造代码块初始化
     6、构造函数具体初始化

  • 相关阅读:
    java 用代码实现判断字符串的开头和结尾
    java基础 1-path
    C#基础(语句 for循环)
    C#基础(数组)
    C#基础(语句 if else)
    C#基础(变量、常量、运算符)
    继承-person
    继承-字母表
    继承-monkey
    继承-people
  • 原文地址:https://www.cnblogs.com/zhuzhuqwa/p/5887363.html
Copyright © 2020-2023  润新知