java基础4
1.子类的实例化过程:产生对象并对成员变量默认初始化-->对构造方法中的形参赋值-->检查构造方法中是
否有this()语句调用-->super语句调用或隐式调用父类的构造方法-->对当前类中的成员变量显式初始化-->
执行当前构造方法中的代码
2.super和this调用语句不能同时出现在一个构造函数中。因为this中已经有了对super的调用。
3.子类覆盖父类方法时不能把父类方法的访问权限改的更弱。
4.final类型的成员变量,要么在一开始就进行赋值,要么就在构造方法中进行赋值,别的地方一般不能赋
值。如果final的前边还有static修饰的话,就不能在构造方法中赋值,因为构造方法需要有一个对象。
5.在强制转换类时使用instanceof来判断是否是希望的那个类。父类需要强制转换才能成为子类,而子类则
可以直接当作父类来调用。
6.多态性
1).应用程序不必为每一个派生类(子类)编写功能调用,只需要对抽象基类进行处理即可。这一招叫“以
不变应万变”,可以大大提高程序的可复用性。
2).派生类的功能可以被基类的引用变量引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前
写的程序可以被后来程序调用不足为奇,现在写的程序(如callA方法)能调用以后写的程序(以后编写的
一个类A的子类, 如类D)就了不起了。
比如父类有一个方法fun1(),和fun2().fun2()调用了fun1(),但是如果fun1()在子类中被重写了之后,当子
类调用父类的方法fun2()时,fun2()所调用的fun1()是被子类重写后的方法,而不是父类的方法,虽然
fun2()并没有被子类重写。
7.要培养在catch中填写代码的良好习惯,以便容易查出出错原因。
8.抛出一个异常之后(throw ***Exception),应该进行相应的捕获(catch)。
9.finally语句的作用:就是无论什么情况下都会执行。它和finally之外的普通语句的一点区别就是:如果
程序执行普通语句之前要返回一个值(return),那么普通语句就不会执行,而finally继续执行。还比如
在一个while循环里面,如果用break跳出,后面的普通语句不会执行,但finally继续执行。只有当程序在
前边进行System.exit(*)的操作时,finally才不会被执行。
10.在jdk中如果临时设置一个包,而并没有手动在相应目录下设置文件夹时,可以在命令行中输入javac -d
. ***.java。其中‘.’表示当前目录,这样系统就会自动生成目录。
11.包不是由文件夹确定的,而是在程序用用package确定的。也就是说,如果程序中没有package的指定,
那么即使把class文件放在几层文件夹中,程序也不会认为是在包里。
12.要经常注意自己所运行的类是否是自己期望的那个类。因为系统中可能还有其他同名的类。
13.如果要访问其他包中的类,那么该类的类型必须是public型的。
14.父包和子包在使用过程中是相对独立的,在引用父包的同时也必须引用子包。如import
java.awt.event.*;import java.awt.*; 如果引入的两个包中包含有相同的类,那么在使用类的过程中应该
使用类的全名(如java.util.Date)。
15.如果找不到某个类,分三步找:1.类名是否写错 2.是否引入了相关包名 3.查看classpath。
16.不用引入java.lang.*,因为系统会默认引用。
17.类的修饰符只能是public或者缺省。
18.java的命名习惯:
包名: xxxyyyzzz
类名接口名:XxxYyyZzz
方法名:xxxYyyZzz
变量名 xxxYyyZzz
常量名:XXXYYYZZZ
19.我们常用的API中的类存放在jre->lib->rt.jar的目录中。
20.在生成jar包时,一定要注意目录层次,有时候系统会自动生成一个顶级目录,和我们以前的顶级目录不
联系客服