Java学习2-面向对象1
Java常用的包
java的核心类都放在java包以及其子包下,Java扩展的许多类都放在javax包以及其子包下。这些实用类也就是API(应用程序接口),oracle公司按这些类的功能分别放在不同的包下。常用包有下面这些。
java.lang:这个包下包含Java语言的核心类,如String、Math、System和Thread类等,使用这个包无需使用import导入,系统会自动导入这个包下的所有类。
java.util:包含Java的大量工具类/接口和集合框架类/接口,例如Arrays和List、Set等。
java.net:包含一些Java网络编程相关的类/接口。
java.text:包含一些Java格式化相关的类。
java.io:包含一些Java输入/输出编程相关的类/接口。
java.sql:包含Java进行JDBC数据库编程的相关类/接口。
java.awt:包含抽象窗口工具集的相关类/接口,用于构建图形用户界面GUI程序。
java.swing:包含Swing图形用户界面编程的相关类/接口,可用于构建平台无关的GUI程序。
类的继承
继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Java的继承具有『单继承』的特点,『一个子类只能有一个直接父类』。
修饰符 class SubClass extends SuperClass{}
『如果一个Java类在定义时没有显式指定这个类的直接父类,则默认的父类是java.lang.Object类,所以java.lang.Object是所有类的父类』
this(ele1,...)可以实现在构造器中调用另一个构造器,必须作为构造器执行的第一条语句。
方法重载、方法重写/覆盖
方法重写规则:“两同两小一大”:
方法名相同、形参列表相同;
子类方法返回值类型应比父类方法返回值类型更小或者相等,子类方法声明抛出的异常类型比父类方法声明抛出的异常类型更小或者相同;
子类方法的访问权限应比父类方法的访问权限更大或相同;
要么都是类方法,要么都是实例方法;
子类方法中可以通过super或者父类类名调用,访问父类中被覆盖的方法;父类方法具有private访问权限的,对子类是隐藏的,因此子类中无法发访问该方法,无法重写。
『任何Java对象,最先执行的总是java.lang.Object类的构造器』
『多态』由于编译时类型与运行时类型不一致
引用变量的强制转换
引用类型的强制转换只能在具有继承关系的两个类型之间进行,如果两个没有任何继承关系的类型,则无法进行类型转换,否则编译就会出现错误;
试图把一个父类的是类转换成子类类型,则这个对象必须实际上是子类实力才行(即编译时类型是父类类型,而运行时类型是子类类型),否则将在运行时引发ClassCastException异常。
instanceof运算符
运算符的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类、接口:判断前面的对象是否是后面类、子类、实现类的实力,如果是返回true,否则返回false。前面操作数的编译时类型要么与后面类型相同,要么有父子继承关系,否则会引起编译错误。
类的访问控制