3.1访问控制级别
1. public:所有类都可以访问
2. protected:同一包中的类或子类可以访问;不可修饰类
3. private:类内部可访问;不可修饰类
4. default:默认;当前目录(包)下的类可访问
3.2类
1. 类的成员变量拥有默认值;而普通的局部变量没有
2. 一个java文件,只允许一个public类;且该类名与java文件名相同
3. 方法的所有代码都要写在类中
4. 类内,可以使用声明在其后面的成员
5. 类中每一对象的数据成员占用不同的内存地址;类中所有对象的方法共享同一内存地址
6. 构造函数:保证一创建对象就对其进行初始化
1) 没有返回类型,void也不是;与类同名
2) 没有则生成默认构造
3) 自动调用;无法显式调用
7. 垃圾回收机制
1) Java提供了一个垃圾收集器进程
2) System.gc():建议回收
3) finalize方法:对象销毁时自动调用
4) this关键字:指向调用其所在函数的对象;也可用于调用其所在类的重载构造函数(必须放在第一行)
3.3访问修饰符和隐藏实现
1. 包
1) 用import导入,用“.”分隔目录;“*”表示所有
2) 定义包:package 包名;将类放到包中,必须确保编译出来的字节码文件也在包中(目录)
3.4继承
1. 可多层继承,但不能同时继承多个父类(即只能单一继承)
2. 用法:[类修饰符] class 类名extends 父类名
3. super:向父类的构造传递参数;必须放在子类构造的第一行
4. 所有类都是Object类的派生类
3.5多态性
1. 面向对象的多态性包括编译时多态和运行时多态
1) 编译时多态主要体现在函数重载
2) 运行时多态主要体现在函数重定义
2. 方法重载:参数列表的不同(包括其声明顺序)
1) 注意类型可以隐式转换
2) 子类类型可转换为父类类型
3. 方法重定义:子类定义的方法覆盖父类的方法;要求:
1) 返回类型相同;参数表相同
2) 访问控制比父类方法更公开或一样
3) 只能抛出父类方法声明抛出的异常
3.6修饰符
1. public、private、protected:可修饰方法
2. static:表示该成员属于类
1) 可修饰类中方法、成员变量(包括其他类的对象)、成员常量,但不可修饰方法中的变量
a) 还可以修饰代码块
b) 静态代码块是指位于类内,但不属于方法内;仅在类第一次使用时执行一次该类的所有对象的static成员共享同一地址;
a) 虽然不属于某一对象,但可用对象对其进行访问;也可用“类名::”访问
2) 只需初次使用时初始化
3) 静态方法只能访问静态数据或静态方法
4) 静态数据成员的默认值为0
3. final:只能赋值一次
1) 可以修饰非抽象类、非抽象方法(不能修饰构造)、普通变量
2) final类不能被继承;final类中的方法默认是final(构造除外)
3) final方法不能被子类覆盖
4) 不能使用没有初始值的final数据
5) 类内的所有private方法都自动被设置final方法
4. abstract:抽象
1) 可以修饰方法、类
2) 含有抽象方法的类必须定义为抽象类
3) 抽象类必须被继承,抽象方法必须被重写
4) 抽象方法没有方法体;不能用final、static修饰
5) 抽象类不能进行实例化,即不能定义其对象
6) 如果抽象类的子类不为抽象类,则子类必须实现父类的所有抽象方法
3.7接口(interface)
1. 接口不能new关键字进行实例化
2. 接口的所有方法没有方法体
3. 可同时继承多个父类;用逗号隔开
4. 接口继承接口:[修饰符] interface 接口名 extends 父接口名1
5. 类继承接口:[修饰符] class 类名 implements 接口名1 [接口名2 …]
1) 如果一个类继承了某接口,则它必须实现该接口的所有方法
2) 如果接口的方法的返回类型是void,类中实现方法体可仅是大括号
3) 当类继承了一个继承了其他接口的接口,则其所有接口都需要实现方法体
6. 接口的方法默认为public;所以类中实现接口的方法时必须修饰为public
7. 接口修饰符
1) public:可被任一类使用
2) 没有修饰符:友好接口,可被同一包中的类使用
3.8嵌套类
1. 成员类
1) 在类的内部定义类
2) 必须首先创建外围对象然后才可用它创建内部对象
3) 静态成员类
a) 实例化静态类时,在new面前不需要用对象变量
b) 静态类中只能访问其外部类的静态成员
1. 局部类:为某个类的局部c) 静态方法中不能不带前缀地实例化一个非静态类
2. 匿名类:没有名字的内部类
3.9枚举
1. 枚举内不能有public构造方法;所有的枚举都是public、static、fianl的;
2. 枚举中可有枚举值、变量、方法;当枚举值必须在前面