最终类object 和内部类

Object 类

     性质:【1】是所有类的根类。

                        【2】如果一个类没有显示继承另外一个类,那么该类一定继承于Object

 

             toString() 返回对象的字符串表示形式

         特殊:【1】输出对象时,默认调用toString方法,返回类型@内存地址

          Object obj = new Object();
              // 输出对象时,默认调用toString方法
              System.out.println(obj.toString);

               equals(Object obj) 用于判断两个对象是否相等。

    【1】== 比较两个对象的内存地址或基本数据类型的比较,

    【2】object默认equals实现比较内存地址。

    【3】当自定义对象时,要比较自定义对象是否相等,就必须通过equals方法比较两个对象属性值是否相等,那就必须重写Object的equals方法。

    快捷方法

   

 内部类  

    在java中,一个文件可以定义多个类,文件名必须和public 类型的类的类名保持一致。编译后 out$info

    在java中,一个类也可以定义在一个类的内部,定义在内部的类称为内部类(inner class),定义在外部的类称为外部类(out class).

              特性:内部类可以拥有属性和方法和构造器和块 一般而言,内部类都用默认修饰符 

                         [1]内部类如何创建对象

      外部类  . 内部类  引用 = new 外部类() .  new  内部类();

       或者先创建一个外部类

          外部类   外部类的引用 = new 外部类  ();
           内部类   引用 =  外部类的引用  . new 内部类();     

       [2] 内部类中可以访问外部类的私有变量

public class Outer {
    
    private String name = "Outer";
    
    class Inner{
        
        public void showInfo() {
                        //访问外部私有变量
            System.out.println(name);
        }
        
    }
}
    

                      特殊情况:外部类和内部类的普通变量同名

 

    class Inner{
        
        private String name = "Inner";
        
        public void showInfo() {
             String name = "show info";
            
            // 访问内部类的私有成员
            System.out.println(this.name);
            
            // 访问外部类的私有成员
            System.out.println(Outer.this.name);
            
        }
    }
}  

    【1】 静态内部类创建对象

     
         Inner inner = new Outer.Inner();

         inner.showInfo();

    【2】静态内部类可以访问外部类的(私有)静态成员

    注意【1】静态内部类访问外部普通成员(非静态成员),需要创建外部一个对象才能访问成员

      【2】特殊情况内部类和外部类定义静态变量名称相同      

            外部类.属性
          //内部类访问
           内部类.属性   
           this.属性  

           

      方法内部类

               定义到一个方法中,成为方法内部类

      【1】 方法的局部变量进入方法内部类时,被加final修饰。出了方法内部类后,final被去掉。

      【2】方法内部类拥有属性和方法和构造器和块 一般而言,方法内部类都用默认修饰符

    匿名内部类

      意义:只使用一次,我们可以把类声明为匿名类。匿名类一般和内部类结合使用,形成匿名内部类

            // 方法内部类
        /*class Inner implements MyInterface{

            @Override
            public void showInfo() {
                System.out.println("Inner:showInfo");
            }
            
        }*/
        
        /*Inner inner = new Inner();
        inner.showInfo();*/
        
        // new Inner().showInfo();
        
        // 匿名内部类   
        new MyInterface(){
            @Override
            public void showInfo() {
                System.out.println("Inner:showInfo");
            }
        }.showInfo();

 

 

 

    

      

posted on 2019-04-26 21:36  德德玛  阅读(202)  评论(0编辑  收藏  举报