接口的基本概念
接口的基本概念:
接口就是以恶个比抽象类还抽象的类,体现在所有方法都为抽象方法。
定义类的关键字是class,而定义接口的关键字是interface。
Jdk1.9开始以后允许接口中出现私有方法。
implements关键字表达多实现的关系
接口的实际意义:
弥补不能多继承的不足
类和接口之间的关系。
接口和抽象类的主要区别
1.定义类的关键字是class,而定义接口的关键字是interface。
2.继承抽象类的关键字是extends,而实现接口的关键字是implements
3.继承抽象类支持单继承,而实现接口支持多实现。
4.抽象类中可以有构造方法,而接口中不可以有构造方法。
5.抽象类中可以有成员变量,而接口中只可以有常量
6. 抽象类中可以有成员方法,而接口中只可以有抽象方法。
7. 抽象类中增加方法时子类可以不用重写,而接口中增加方法时实现类需
要重写(Java8以前的版本)。
8. 从Java8开始增加新特性,接口中允许出现非抽象方法和静态方法,但非
抽象方法需要使用default关键字修饰。
9. 从Java9开始增加新特性,接口中允许出现私有方法
特殊类
内部类的基本概念:
当一个类定义出现在另外一个类的类体中时,那么这个类叫做内部类(Inner),而这个内部类所在的类叫做外部类(Outer)。
类中的内容:成员变量,成员方法,构造方法,静态成员,构造块和静态代码块,内部类。
实际作用:
当一个类存在的价值仅仅是为了某一个类单独服务时,那么就可以将这个类定义为所服务类中的内部类,这样可以隐藏该类的实现细节并且可以方便的访问外部类的私有成员而不再需要提供公有get和set方法。
内部类的分类:
普通内部类:直接将一个类的定义放在另外一个类的类体中。
静态内部类:使用static关键字修饰的内部类,隶属于类层级。
局部内部类:直接将一个类定义在方法体的内部时。
匿名内部类:就是指没有名字的内部类。
普通(成员)内部类的格式
访问修饰符 class外部类的类名{
访问修饰符class内部类名{
内部类的类体;
}
}
普通内部类的使用方式:
普通内部类和普通类一样可以定义成员变量,成员方法以及构造方法等。
普通内部类和普通类一样可以使用final或者abstract关键字修饰。
普通内部类还可以使用private或者protected关键字进行修饰。
普通内部类需要外部类对象来创建对象。
如果内部类访问外部类中与本类内部同名的成员变量或方法时,需要使用this关键字。
静态内部类的格式
访问修饰符 class外部类的类名{
访问修饰符 static class内部类名{
内部类的类体;
}
}
静态内部类的使用方式:
1.静态内部类不能直接访问外部类的非静态成员
2.静态内部类可以直接创建对象
3.如果静态内部类访问外部类中,与本类内同名的成员变量或方法时,需要使用类名.的方式访问
局部内部类的格式:
访问修饰符 class外部类的类名{
访问修饰符 返回值类型 成员方法名(形参列表){
class内部类名{
内部类的类体;
}
}
}
局部内部类使用方式;
1.局部内部类只能再该方法的内部可以使用
2.局部内部类可以在方法内部直接创建对象。
3.局部内部类不能使用访问控制符和static关键字修饰符。
4.局部内部类可以使用外部方法的局部变量,但必须是final的,由局部内部类和局部变量的声明周期不同所致。
回调模式的概念
回调模式是指--如果一个方法的参数是接口类型,则在调用该方法时,需要创建并传递一个实现此接口类型的对象;而该方法在运行时会调用到参数对象中所实现的方法(接口中的定义)。
匿名内部类的作用:
匿名内部类的语法格式(重点)
接口/父类类型 引用变量名=new 接口/父类类型(){方法的重写};
//从java8开始提出新特性lama表达式可以简化上述代码 格式为:(参数列表)->{方法体};
枚举的基本概念和自定义实现
枚举的基本概念:
在日常生活中事物的所有值都可以一一列举出来,而这个列举出来的类型就叫做枚举类型。
枚举类型定义:
使用public static final 表示的常量描述较为繁琐,使用enum关键字来丁义枚举类型取代常量,枚举类型是从java5开始增加的一种引用数据类型。
枚举值就是当前类的类型,也就是指向本类的对象,默认使用public static final 关键字共同修饰,因此采用美剧类型的方式调用。
枚举类可以自定义构造方法,但是构造方法的修饰符必须时private,默认也是私有的。
枚举类型要求所有枚举值放在枚举类型的最前面。
常用方法: