day12

来源:互联网 发布:淘宝女牛仔裤 编辑:程序博客网 时间:2024/05/22 03:24

关于多态

  • 重载和重写?多样性
  • 对象的多态性

    • 对象在编译时与运行时表现类型不一致
    • 编译时,看声明的类型,看左边;运行时,看实际赋值的对象,看右边
    • Father f = new Father();本态引用
    • Father f = new Son(); 多态引用
    • 运行的时候,会执行Son的方法
  • 多态的前提

    • 继承
    • 多态引用,父类的变量指向子类的对象
    • 方法的重写

关于类型转换

  • 向上转型:子类——>父类

    • 子类的对象可以赋值给父类的变量,子类的对象在编译时,就会按照父类的变量的类型进行编译检查处理
  • 向下转型:父类——>子类(强制转换)

    • 父类的变量之前必须指向该子类的对象,否则会报异常(ClassCastException)
  • 运算符 对象 instanceof 类型

    • 对象 符合类型返回true,否则返回false

关于多态的应用

  • 多态数组
  • 多态参数:隐含了向上转型
  • 静态方法没有重写,不能多态了,只看编译时的类型
  • 属性也不能重写,只有方法才可以重写

关于static

  • 可以用来修饰属性、方法、代码块、内部类,不能修饰构造器;修饰属性时提供static的set/get方法
  • 编写类时,描述对象和行为,并没有产生新对象
  • static修饰了的变量称为类变量,否则称为实例变量
  • 方法区:存储类的信息、静态数据、常量;静态的属性值是所有对象所共有的
  • 方法如果和调用者无关,通常被声明为类方法,用static修饰,一般情况多用于工具类
  • 非静态方法可以使用本类的静态方法
  • 而静态方法却不可以使用本类中的静态方法;即静态方法中只能使用静态成员???这是因为静态成员随着类的加载初始化,而非静态成员在创建对象时才初始化,为了避免仅仅加载类而未创建对象,而不允许在静态方法中访问非静态的属性,因为有可能此时还没有分配到非静态的属性的空间和初始化它的值。

关于代码块

  • 静态代码块:为类变量初始化,static{ … }

    • 类加载并初始化的时候调用,只调用一次
  • 非静态代码块

    • 为实例变量初始化
    • 创建对象的时候调用,类似于构造器,也可以称为构造块
    • 多个构造器中重复的代码,可以提取到构造块中
    • 在构造器之前执行

其他

  • native:表示本地的、原生的

    • 表示这个方法不是java语言实现的,是使用C、C++实现的
    • 当成普通java方法使用就好,可以被重写
  • final修饰的类不能被继承,final修饰的方法不能被重写

  • static和final同时修饰,是全局常量
  • 局部变量只能被final修饰
原创粉丝点击