抽象方法
抽象方法的作用:声明一种高层的抽象概念上的策略和契约。具体的实例是由子类中对抽象方法的重写后的方法逻辑实现的。
所有在抽象类中定义的抽象方法都必须在子类中实现,除非子类也是抽象类。
抽象方法一定被定义在抽象类中,抽象类中不一定有抽象方法。
抽象类
抽象类是不能被实例化的,不能new
抽象类是制定策略,不是用于构造对象,而是定义类于类之间的层次关系。
枚举 (enum)
是一种特殊的class
- 枚举实例的常用方法
- name()获取枚举变量名
- ordinal()得到枚举对象的索引
- 枚举类方法
- values()返回枚举类型中定义的所有对象实例组成的一个数组
- valueOf(“”):按照枚举对象的名称获取指定对象
- valueOf(fileName,“”):指定某个文件文件中的某个对象名称获取指定对象
包装类
包装类的构造方法
- 所有包装类都有的构造方法:public 包装类型(与包装类类型一致的基本数据类型数据){}
- 除了Character之外都有的构造方法:public 包装类型(String 与包装类类型一致的字符串){}
- Boolean 构造时除了“true”这4个字母忽略大小写传进去结果为
true
,其他的均为false
- Boolean 构造时除了“true”这4个字母忽略大小写传进去结果为
包装类的常用方法
- ***Value():将包装类转换为基本数据类型,比如integerNum.intValue()可以使Integer的包装类对象转换成int类型的值
- toString():把基本类型转换为字符串,是一个静态方法,可以使用包装类名点出
- 也可以使用基本数据类型+“”(空字符串)可以直接变成字符串
- parse***():把相应的字符串转换为相应的基本数据类型(Character除外),也是静态方法
- valueOf():所有包装类都有此静态方法,功能和构造方法相同
内部类
public class Body {
public int age = 12;
// 普通内部类
class Heart {
public String color;
public void show() {
System.out.println("我的心是"+color+",今年"+age+"岁了");
}
}
// 静态内部类
static class Wei {
String color;
public void show() {
System.out.println("我的胃是"+color);
}
}
// 方法内部类
public void info() {
class Gan {
String school;
public void show() {
System.out.println("我的学校"+school);
}
}
Gan gan = new Gan();
gan.school = "北大";
gan.show();
}
}
// 测试
public class InteriorClassDemo {
public static void main(String[] args) {
// 普通内部类的调用
Heart heart = new Body().new Heart();
heart.color="红色";
heart.show();
// 静态内部类的调用
Wei wei = new Body.Wei();
wei.color = "红色";
wei.show();
// 方法内部类的调用
Body body = new Body();
body.info();
}
}
匿名内部类
// 父接口
public interface FatherInterface {
void show();
}
// 父类
public class FatherClass {
public void name() {
System.out.println("你好");
}
}
// 测试
public class AnonymityInteriorClassDemo {
public static void main(String[] args) {
// 通过父类声明的匿名内部类对象
new FatherClass() {
public void show() {
System.out.println("hello");
}
}.show();// 通过点调用方法
// 通过父接口声明的匿名内部类对象
new FatherInterface() {
@Override
public void show() {
System.out.println("北京欢迎你");
}
}.show();// 通过点调用方法
}
}