zoukankan      html  css  js  c++  java
  • .Net转Java自学之路—基础巩固篇九(Object、内部类)

    Object:

      所有类的父类,即跟类。Java中的类直接或间接的继承自Object

      该类中封装了所有对象都具备的方法:

        boolean equals(Object obj)  对象比较;默认比较内容地址。所以很多对象都会对该方法复写。

        String toString()  字符串转换。

        int hashCode()  对象哈希值。

        void finalize()  垃圾回收调用的垃圾回收方法。

    内部类:

      也称:内置类、嵌套类。将类定义在另一个类中。内部类可以直接访问外部类的成员。外部类访问内部类,需建立内部类的对象。

      什么时候定义内部类?

        当分析一个事物时,该事物内部还有具体的事物,这个具体的事物在使用该事物的其他成员。这时就将这个具体的事物用内部类来描述。

      而且内部类通常都不会直接对外提供,都会封装到外部类中,外部类一般会通过对外提供方法的形式对其访问。

      对内部类的访问:

        外部类.内部类 对象=new 外部类().内部类()

      通常情况下内部类不被其它类访问。一般定义为private私有化。

      当内部类中如果有静态成员时,该内部类必须是静态的;而静态内部类只能访问外部类的静态成员。

      在执行静态内部类方法时的俩种情况:

        1、内部类静态,方法非静态:该方法需要对象调用执行。

        2、内部类静态,方法静态:类名.方法名

      非静态内部类之所以可以访问外部类的成员,那是因为内部类汇总都只有一个外部类对象引用;外部类.this.成员

      若内部类定义在局部位置上,那么只能访问该局部中被final修饰的常量。

    匿名内部类:

      没有名字的内部类。优点:简化了内部类的书写。

      简化的前提:内部类必须继承或实现实现一个外部类或外部接口。

      格式:

        new 父类/接口名 { 实现方法/子类内容(覆盖父类的方法,可以添加自己的方法)}

      匿名内部类其实就是一个子类匿名对象。这是一个带有内部的对象。

      特殊实例:

    new Object    /*第一种情况*/
    {
      void method()
      {
          /*Code;*/
      }    
    }.method();
    
    Object obj=new Object    /*第二种情况*/
    {
      void method()
      {
          /*Code;*/
      }    
    };
    obj.method();
    

      第一种情况正常运行。

      第二种情况不能正常运行。

      原因:等号右边是一个Object类的子类对象,用匿名对象来表示的。当把这个对象赋值给Object类型的obj时,该类的对象就相当于转换成为Object。而obj中时没有定义method方法的。这就是在多态时,一般非静态函数调用时,编译看左边,运行看右边的原理。

  • 相关阅读:
    JavaScript 正则表达式(RegExp)
    impala 时间格式转换
    Informatica TO_BIGINT,TO_DECIMAL 转 字符串
    Hive metastore三种配置方式
    Windows10 从零搭建 Hadoop/Hive 环境及 Hive 入门
    Window 安装Hive
    使用dynamic-datasource-spring-boot-starter配置多数据源
    Sqoop 安装与简单测试
    使用dynamic-datasource-spring-boot-starter做多数据源及源码分析
    真正了解sqoop的一切
  • 原文地址:https://www.cnblogs.com/zltao/p/9231895.html
Copyright © 2011-2022 走看看