[Java]Java学习笔记(三)——类的基本语法(二)
2015-02-26 08:50
309 查看
基本要点
1、在 Java 中使用 extends 表示继承。所有的继承都是公有继承。2、在子类中可以通过 super 关键字调用超类(父类、基类)的成员函数或构造函数,格式分别是
super.menberFunction(...)和
super(...)。
3、如果不希望某个类被继承,则应该标注为 final,同时类的成员方法也会被自动当作是 final(此时类不再支持动态绑定,可以被内联化);
如果不希望类里的某个方法被子类覆盖,则应该标注为 final;
4、与 C# 相同,Java 也不支持多继承。
5、上行转换时安全的,在 Java 里不需要强制类型转换,
下行转换常常是不安全的,如果是显示地将超类转换为子类,会抛出
java.lang.ClassCastException异常。
Base[] b = new Base[10]; Derive[] d = (Derive[]) b;
如果是间接地用超类覆盖子类数组中的某一个,会抛出
java.lang.ArrayStoreException异常。
Derive[] d = new Derive[10]; Base[] b = d; b[0] = new Base();
6、子类方法覆盖基类方法时,子类方法的访问权限不得比基类方法的访问权限高。
7、
obj instanceof Class关键字可以用于判断 类对象 obj 是否是 类 Class 或其子类的实例。
如果不是,则返回 null。
8、使用 Abstract 声明一个类为抽象类。也可以声明某个方法为抽象方法(纯虚函数)。抽象类不能有实例。
9、如果超类的某个成员需要让子类访问,那么该成员可以声明为 protected。与其他语言有所差别的是,protected 成员对所有子类都可见。
Object 类的 clone 函数就是 protected 属性。
基本上所有使用到 protected 属性成员的类都是类层次关系不良设计的结果。
10、getClass() 方法可以获取存储类信息的 Class 变量,用于判断两个实例的类类型是否相同。
Class 是 Java 用于存储运行时类型(包括接口名)信息的类,最常用的成员方法时 getName,获得类型名称。
还可以使用 forName(String) 通过字符串获得对应的 Class 变量,其中 string 为对应类型的名称或含包路径的名称:
String className = "java.util.Data"; Class cl = Class.forName(className);
也可以使用 Type.Class 获取 类型 Type 的 Class 变量。
Class 中还提供了成员函数 newInstance 用于创建类实例。
事实上,这部分是反射里的内容,暂时不讲了。
11、接口:Java 里使用 implements 关键字来表示实现了某个接口,比如 Comparable、Cloneable等。
12、Java 里的模板不需要使用关键字,直接在 <> 里说明即可。
关于 Java 的内部类和反射以后再说。
相关文章推荐
- 黑马程序员-学习笔记java基础-基本语法
- J2SE学习笔记3 — Java基本语法(9)数组和枚举
- [core Java学习笔记][第一二三章基本语法]
- J2SE学习笔记3 — Java基本语法(2)基本数据类型
- 开始着手JAVA了,JAVA基本语法学习笔记
- JAVA学习笔记Day02——基本语法
- JAVA学习笔记 DAY2 基本语法
- thinkinginjava学习笔记03_基本语法
- J2SE学习笔记3 — Java基本语法(6)基本输入输出
- Androidx学习笔记(45)--- 获取文件的后缀名(java基本语法)
- [core Java学习笔记][第一二三章基本语法]
- 学习笔记之javaweb基础:jsp基本语法,内置对象,对JavaBean的操作语法
- Java学习笔记之基本语法
- java学习笔记(二) -- 基本语法
- Java学习笔记一:基本语法:类和对象的介绍、数组、引用类型
- 尚硅谷java学习笔记——2.基本语法
- json学习笔记_01_json语法基本格式并s会用java读取json
- JAVA学习笔记(二)——基本语法
- [Java]Java学习笔记(二)——类的基本语法
- JAVA基本语法的学习笔记