Java 9 传参予返回值、链式编程、内部类、Object类

传参与返回值

当以后看到一个方法的形参类型是一个类 类型,就返回一个该类的对象
Java 9 传参予返回值、链式编程、内部类、Object类
当以后看到一个方法的形参要一个抽象类 类型,就传递一个该类型的子类对象。
Java 9 传参予返回值、链式编程、内部类、Object类
当以后看到一个方法的形参要一个接口 类型,就传递一个接口的子类对象。
Java 9 传参予返回值、链式编程、内部类、Object类

当以后看到一个方法的返回值类型要一个类 类型,你、就返回一个该类的对象。
Java 9 传参予返回值、链式编程、内部类、Object类
当以后看到一个方法的返回值类型要一个抽象类 类型,你要返回一个该类的子类对象。
Java 9 传参予返回值、链式编程、内部类、Object类
当以后看到一个方法的返回值类型要一个接口类型,就返回一个该接口的子类对象
Java 9 传参予返回值、链式编程、内部类、Object类

链式编程

链式编程的语法风格:当调用完一个方法后,他返回一个对象,那就可以紧接着打点再去调用这个对象所属类中的方法。

  • 四种权限修饰符

    本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
    private Y
    默认 Y Y
    protected Y Y Y
    public Y Y Y Y

内部类

​ 将类A定义到类B中,那么这个类A就称为内部类,类B称为外部类。根据内部类定义位置不用分为:成员内部类和局部内部类。

成员内部类:就是把内部类定义到外部类的成员位置(类中方法外)

局部内部类:就是把内部类定义到外部类的局部位置(方法中)

创建内部类对象:Outer.Inner inner =new Outer().new Inner();

内部类的特点:

​ 内部类可以直接访问外部类的成员,包括私有成员。

​ 外部类不能直接访问内部类的成员。要访问必须创建内部类的对象。

私有的内部类外界无法创建其对象

内部类可以使用static次修饰 创建静态内部类的方法简化了

Outer.Inner inner = new Outer.Inner( );

静态内部类只能访问外部类的静态成员

局部内部类去访问外部类的局部变量,外部类的局部变量必须为一个常量

  • 匿名内部类

是局部内部类的一种简写形式

语法格式:new 接口名/类名(){重写方法}

本质:匿名内部类本质上是一个对象,是实现了该接口或者继承了该抽象类的子类对象

对于一个普通的类,我们也可以使用一个匿名的内部类来创建该类的子类对象。

匿名内部类经常可以作为参数来传递

匿名内部类作为返回值返回

  • 内部接口

在一个类里面可以定义一个接口。

在外界可以采用匿名内部类的方式,创建出内部接口的子类对象。(利用匿名内部类的方法)

Java 9 传参予返回值、链式编程、内部类、Object类

内部接口可以私有,私有后外界无法创建其子类对象

局部内部类访问外部类的局部变量,外部类的这个局部变量必须要为一个常量,JDK1.8之后 ,前面这个final默认就加上了,为什么呢 ?
因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。
为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值。
JDK1 .8 之后,final会默认加上,不用手动去加

Object 类

Object 是所有类的顶层父类,所有的类,都是直接或间接继承自他。

hashcode() 哈希码 不同对象的哈希码值是不一样的

Object.java---->Object.class---->当Object.class这个自己吗文件加载的时候JVM就会为字节码文件来创建对象。

这个字节码文件对象,用Class类型来描述。

toString() 打印该对象的地址值,以字符串形式返回

Java 9 传参予返回值、链式编程、内部类、Object类