1.接口
1.1接口的定义:
java接口是一系列方法的声明,是一些方法特征的集合。
接口的本质是一种规范,是对外部特征的抽象。
public interface 接口名{}
1.2接口的使用规范
- 接口的成员方法必须是全局抽象类型public abstract
- 接口只能定义常量,不能定义变量,定义的变量都会被编译器自动加上public static final修饰,必须在定义时赋值
- 接口中不能由构造方法,接口不能被实例化
- 接口可以被实现,接口的实现类要么实现接口中定义的所有抽象方法,要么成为抽象类
- 一个接口可以继承多个接口,但不能继承类(无论是具体类还是抽象类)
2.抽象类
2.1 抽象类的定义:
权限修饰符 abstract class 类名{}
2.2 抽象类和抽象方法的使用规范
- 抽象类不能被实例化‘
- 抽象方法只能由方法声明,不能由方法体
- 抽象类用来被继承,抽象方法用来被重写
- 抽象类可以没有抽象方法,包含抽象方法的类一定是抽象类
- 抽象类的子类,要么重写父类中所有的抽象方法,要么声明为抽象类
- 抽象类引用指向子类对象实现多态
- 抽象类中有构造方法,成员方法(抽象和非抽象的)和变量、常量
- 和具体类一样,可以实现多个接口
2.3 抽象类的作用:
1、模板作用,比如父类的一个普通方法中包含抽象方法,抽象方法推迟到子类去实现
2、也能起到规范的作用
3.内部类
3.1 内部类的位置
内部类可以定义在类的内部,成员方法内部或作为实参传递。
3.2 成员内部类
特点:创建内部类的目的,大多是不想被外界访问,所以内部类应该私有化,再提供一个可供外界调用的方法
public class Outer {//外部类
private int num = 10;
private class Inner{//内部类
private int x = 200;//内部类的成员变量
public void print(){//内部类的成员方法
System.out.println(num);
}
}
public void show(){
Inner inner = new Inner();
System.out.println(inner.x);
inner.print();
}
}
public class OuterTest {
public static void main(String[] args) {
Outer outer = new Outer();
outer.show();
//在其他类中访问外部类中的内部类
//Outer.Inner inner = new Outer().new Inner();
}
}
3.3局部内部类
特点:局部内部类在他所在的方法之外无法被访问,方法内若要访问,则需要创建内部类的对象
public class Outer {//外部类
private int num = 10;
public void mehtod(){
int num2 = 20;
class Inner{// 局部内部类在外界(外部类之外的类)是无法直接访问的
public void show(){
System.out.println(num);
System.out.println(num2);
}
}
Inner inner = new Inner();
inner.show();
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.mehtod();
}
}
3.4 匿名类
目的:作为参数传给类的引用或接口
格式:new 类名(){
重写的方法
}
new 接口名(){
实现方法
}
public class DaoTest{
public static void main(String[] args) {
DaoTest daoTest = new DaoTest();
daoTest.test(new Dao() {
@Override
public void add() {
System.out.println("匿名内部类实现....");
}
});
}
public void test(Dao dao ){
dao.add();
}
}