J2SE学习笔记(三)

(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/ .


你可能感兴趣的:(J2SE,Java学习笔记)