(11)Object类:所有类的超类
protected Object clone()
boolean equals(Object obj)
protected void finalize()
Class<?> getClass()
int hashCode()
String toString()
(12)final
final修饰的方法不可被重写(如果子类中出现同名方法,实际是定义了一个新方法)
final修饰的方法仍然可以被重载
final修饰的类不可有子类
final修饰的变量一旦获得了初始值就不能被改变
(13)抽象类与抽象方法
抽象类:
增加abstract修饰符的类————即便没有包含抽象方法的普通类增加abstract修饰符也成为抽象类
抽象类不能被实例化,只能被继承
没有完全实现父类抽象方法的类都只能继续是抽象类。
抽象方法:
抽象方法由abstract修饰并且没有方法体。
(14)接口
定义接口:
[public] interface 接口名 extends 父接口1,父接口2,父接口3……
{
//由于接口内不可能存在构造方法和初始化块,因此Field只能在定义的时候指定默认值——即常量Field
//接口里的方法只能含有抽象实例方法
}
接口可以实现多继承
接口本身不能显式的继承类,以弥补java中单继承的不足
接口的实现:
[修饰符]class 类名 extends 父类 implements 接口1,接口2……{
//类体部分
}
(15)内部类
内部类的class文件的文件名为:外部类$内部类.class
非静态内部类不允许有静态属性、静态方法、静态初始化块及静态内部类
在外部类外使用内部类:
非静态:
OutClass.InnerClass ic=new OutClass.InnerClass(); ic.testFunction();
静态:
OutClass.InnerClass.staticFunction();
(16)匿名类
不能是抽象类,不能自己定义构造函数(可以用初始化块代替)
(17)枚举类(1.5+)
枚举类的构造方法默认是private,且只能是private
枚举类要么是final,要么是abstract(如果该枚举中包含了抽象方法,该枚举就会自动变成抽象枚举;否则就是final的)
枚举类自动继承了java.lang.Enum:
public final int ordinal()
public final boolean equals(Object other)
public final int compareTo(E o)
public String toString()
定义枚举时必须在第一行列出所有可能的实例(实际上是new了所有的实例)
public enum EnumClass { CUP("茶杯",12), DESK("书桌",223), BOOK("书",58); private String name; private int price; private EnumClass(String name, int price) { this.name=name; this.price=price; } public void display(){ System.out.println(this.name + ":" + this.price); } }
public class Main { public static void main(String[] args) { EnumClass.BOOK.display(); EnumClass.CUP.display(); } }
(18)jar包
实际就是包含了清单文件的zip压缩包
C:\>jar 用法: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 选项: -c 创建新档案 -t 列出档案目录 -x 从档案中提取指定的 (或所有) 文件 -u 更新现有档案 -v 在标准输出中生成详细输出 -f 指定档案文件名 -m 包含指定清单文件中的清单信息 -n 创建新档案后执行 Pack200 规范化 -e 为绑定到可执行 jar 文件的独立应用程序 指定应用程序入口点 -0 仅存储; 不使用任何 ZIP 压缩 -M 不创建条目的清单文件 -i 为指定的 jar 文件生成索引信息 -C 更改为指定的目录并包含以下文件 如果任何文件为目录, 则对其进行递归处理。 清单文件名, 档案文件名和入口点名称的指定顺序与 'm', 'f' 和 'e' 标记的指定顺序相同。 示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中: jar cvf classes.jar Foo.class Bar.class 示例 2: 使用现有的清单文件 'mymanifest' 并 将 foo/ 目录中的所有文件归档到 'classes.jar' 中: jar cvfm classes.jar mymanifest -C foo/ .