语句块
-
普通代码块
写在方法里面的
{
}
-
构造块
写在类里面的
{ }
每次 创建对象都会执行一次
-
静态块
在类中定义的,使用static修饰的代码块,称为静态代码块,它是属于类的,在类加载时就自动执行。
static{ }
只会在加载类时执行一次
内部类与外部类
定义:将一个类定义在另一个类的里面,里面那个类就称为内部类(内置类,嵌套类)。
内部类不仅可以在类中定义,还可以在方法中定义.
访问特点:内部类可以直接访问外部类中的成员,包括私有成员。而外部类要访问内部类中的成员必须要建立内部类的对象。
内部类引用外部类对象:外部类名.this
内部类的分类
-
成员内部类
- 非静态内部类
- 静态内部类
- 匿名内部类
-
方法内部类
方法内部类不能用puclic修饰.只能通过在该方法里定义内部类的对象,直接调用内部类的方法
-
匿名内部类
定义:就是内部类的简化写法。 前提:内部类必须继承或实现一个外部类或者接口,但两者不可兼得。 格式:new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)} 简单理解:就是建立一个带内容的外部类或者接口的子类匿名对象。
内部类定义在成员位置上,可以被private、static成员修饰符修饰。被static修饰的内部类只能访问外部类中 的静态成员。
如果内部类中定义了静态成员,该内部类也必须是静态的!
- 继承式
- 接口式
- 参数式
三、注意事项
在使用匿名内部类的过程中,我们需要注意如下几点:
- 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
- 匿名内部类中是不能定义构造方法的。
- 匿名内部类中不能存在任何的静态成员变量和静态方法。
- 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
- 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
- 当所在的方法的形参需要被内部类里面使用时,该形参必须为final。
抽象
-
抽象类
Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰。
Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
抽象类不一定有抽象方法,包含抽象方法的类一定是抽象类.
抽象类不可以new创建对象,但是抽象类有构造方法.
-
抽象类的使用
- 定义一个子类继承抽象类
- 复写抽象类中所有的抽象方法