java类包
- 创建包
package 包名
- 导入包
import 包名
一、抽象类
抽象类:只声明方法的存在,而不去具体实现
- 抽象类不能被实例化
- 关键字
abstract
- 定义抽象类:
权限修饰符 abstract class 类名{
类体
// 抽象方法
}
抽象方法:
abstract 返回值类型 方法名(参数列表)
- 必须要在子类中重写
- 抽象方法不能使用
private、static、final
修饰 - 在子类中应实现抽象类的所有抽象方法,如果还有未实现的抽象方法,则子类必须声明为抽象类
二、内部类
1. 成员内部类
public class OuterClass{ // 外部类
public class innerClass{ // 内部类
// ...
}
}
- 在内部类中可以随意使用外部类的成员变量、成员方法(private也可以)
- 内部类的实例一定绑定在外部类的实例上
- 内部类的成员只在内部类的范围内访问,不能直接被外部类使用
- 如果内部类没有被声明为静态,则不能含有静态变量
- 外部类引用内部类:
外部类名.内部类名
- 内部类实例化:
new
- 使用this关键字获取内部类与外部类的引用
2. 局部内部类
局部内部类就是在类的方法中定义的内部类,作用范围只在这个方法体内
class OuterClass3{
public OutInterface2 doit(final String x){ //doit()方法参数为final类型
//在doit()方法中定义一个内部类
class InnerClass2 implements OutInterface2{
InnerClass2(String s){
s = x;
System.out.println(s);
}
}
return new InnerClass2("doit");
}
}
3. 匿名内部类
return new A(){
//...内部实体
}
class OuterClass4{
public OutInterface2 doit(){ // 定义一个doit方法
return new OutInterface2(){ // 声明匿名内部类
private int i = 0;
public int getValue(){
return i;
}
};
}
}
4. 静态内部类
在内部类名前加修饰符statiic
/**
* 静态内部类
* 静态内部类不可以使用外部类的非静态成员
* 如果创建静态内部类的对象,不需要其外部类的对象
* 不能从静态内部类的对象中访问非晶态外部类的对象
* */
5. 内部类的继承
/**
* 内部类的继承
*
* 当某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,
* 并且这个构造方法的参数为需要继承内部类的外部类的引用,
* 同时在构造方法体中使用 外部类引用.super()语句,这样才为继承提供了必要的对象引用
* */