zoukankan      html  css  js  c++  java
  • Java基础进阶_3

    多态:

    格式:

    父类名称 对象名称 = new 子类构造器;

    接口名称 对象名称 = new 实现类构造器;

    概念:同一个类型的对象,执行同一个行为,在不同的状态下会表现出不同的行为特征。

    多态识别技巧:

    对于方法的调用:编译看左边,运行看右边。

    对于变量的调用:编译看左边,运行也看左边。

    (左边是父类,右边是子类)

    使用前提:

    1.必须存在继承和实现关系

    2.必须存在父类类型的变量引用子类类型的对象

    3.需要存在方法重写

    多态的优势:

    1.右边可以实现组件化切换,业务功能也随之切换,便于维护和扩展,可实现类与类之间的解耦

    2.实际开发过程中,父类类型作为方法形式参数,传递子类对象给方法,可以传递一切子类对象进行方法的调用,更能体现出多态的扩展性和便利

    劣势:

    当子类想调用自己独有的方法时,编译看左边,说明父类中必须要有此方法,不然编译阶段就报错。

    如何解决劣势:

    使用引用类型的强制类型转换。大范围转小范围需要强制转换。由父类类型转为子类类型需要强转。

    有继承/实现关系的两个类型就可以实现类型转换,编译阶段一定不会报错,但运行阶段可能报ClassCastException

    建议在转换之前先判断变量的真实类型,语法:变量 instanceof 类型

    前者是后者的类型或者其子类类型才会返回true

     内部类:

    静态内部类:

    用static修饰的内部类,在外部类里面。内部类和外部类成员一样的。可以在内部类访问外部类的静态成员,但不能直接访问实例成员,需要用外部类的对象来访问。

    Outter.Inner in = new Outter.Inner(); //属于外部类本身。

    成员内部类:

    与普通类一样,无static修饰,但是不能在成员内部类里定义静态成员,但可以定义常量。

    Outter.Inner in = new Outter.new Inner(); //属于外部类对象的,需要先创建外部类对象才能创建内部类对象。可以在成员内部类访问外部类的静态成员,也能直接访问实例成员,因为成员内部类是属于外部类对象的。

    局部内部类:

    可在类里面的方法、构造器、代码块、for循环里定义类,只能定义实例成员,不能定义静态成员,可以定义常量。

    匿名内部类:

    无名字的内部类,为了简化代码。

    格式:

    new 类名|抽象类|接口(形参){

      方法重写。

    };

    特点:1.无名字的内部类

    2.匿名内部类一旦写出来,就会立即创建一个匿名内部类的对象返回

    权限修饰符:

    Object类:

    equals()方法比较两个对象的地址,不相同返回false,但比较地址通常使用 == ,通常比较两个对象的内容需要按照自己要求重写此方法。

    a.equals(b)和Objects.equals(a,b):后者可以防止a对象为空的情况,前者如果a对象为null会报空指针异常,后者更严谨。jdk1.7开始有Objects类。

  • 相关阅读:
    使用Pandas groupby连接来自多行的字符串
    Pandas数据分析介绍
    SQL Server 32位数据源与64位数据源区别
    SQL Server install
    windows 远程提示CredSSP
    linux 终端下以图形界面打开当前文件夹
    Linux g++ include link
    undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
    Linux下的库操作工具-nm、ar、ldd、ldconfig和ld.so
    git update
  • 原文地址:https://www.cnblogs.com/superyucong/p/12637815.html
Copyright © 2011-2022 走看看