Java学习笔记(三)

对象的构造以及初始化:

调用本类构造方法:this

调用直接父类工作方法:super

This或者super要放在第一条语句,而且只有一条

如果没有thissuper 编译器会自动加上super构成不带参数的构造法方法

内部类的定义:

将类的定义置于一个类的内部即可,编译器生成xxxx$xxxxclass文件,内部类不能与外部类同名。 在封装其他类的内部使用方法与普通类相同,若要在其它地方使用,需要在类名前要冠以外部类的名字,在用new创建一个内部类时候,也要在new前面冠以对象变量 即就是 外部对象.new 内部类名(参数) 

内部类可以直接访问外部类的字段及方法 如果内部类中有与外部类同名的字段或方法,可以用 外部类名.this.字段

内部类与成员,它前面也可以用访问控制字符和其他修饰符:访问控制字符:publicprotectprivateFinal abstract

Static修饰符:可以用来修饰内部类 用力啊表示该内部类实际上是一种外部类。因为它与外部类实例无关。在使用的时候1在实例化static类时,在new前面不需要用对象实例变量2‘static类不能访其外部类的非static字段以及方法,即只能访问static成员。3’static方法中不能访问非static的域及方法,也不能够不带前缀的new一个非static的内部类

局部类的特点:不能够用publicprivateprotectedstatic等修饰,但是可以被final或者abstract修饰。可以访问其外部类的成员。不能够访问该方法的局部变量,除非是final局部变量。

例如 

class Outer
{
    private int size =5;
    public Object makeTheInner(int localVar)
    {
        final int finalLocalVar = 99;
        class Inner{
            public String toString()
            {
                return ("Innersize:" + size+"finallocvalvar"+finalLocalVar);
            }
        }

        return new Inner();
    }
}

匿名类:

1:不取名字,直接用其弗雷或接口的名字。

2:类的定义的同时就创建实例,即类的定义前面有一个new

 New 类名/接口名()

{……}

不使用关键词class,也不使用extendsimplement

3:在构造对象时,使用父类的构造方法。

不能够定义构造方法,因为它没有名字。如果用new对象时,要带参数,则使用父类的构造方法。

如一个比较大小的排序接口:

Array.<Book> sort (books,new Comparator<Book>(){

Public compare(Book b1,Book b2)

{

Return b1.getPrice() - b2.getPrice();

}});

原文地址:https://www.cnblogs.com/KID-XiaoYuan/p/7739734.html