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 最终类的特点_方法内部类

 内部类  

    在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.属性

      方法内部类

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

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

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

匿名内部类

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

// 方法内部类
        /*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();