学习Java的笔记(3)
61、每个类 只有一个类变量,属于该类的对象会共享类变量。不需要通过对象来存取类变量。
62、一个static方法只能存取类的static数据;一个static方法只能存取类的static方法;无法在算他题
词方法中使用this;一个static方法无法被非static方法所替代。
63、构造函数并没有返回值,它需和所在的类同名,如果所用的类并没有构造函数,Java编译器会自动生
成一个默认构造函数(不含参数)。
64、Java中,new是不可省略的,使用new表示该变量的内存是动态分配的,但必须记得将该内存释放掉。
65、基本数据类型将其值存放在堆栈中,而引用数据类型是将其引用存在堆栈中,但其所引用的对象则是
存在堆(heap)中。
66、Java有引用数据类型和基本数据类型,但只有一种传递方法,即通过数值传递(pass-by-value),
并没有通过引用传递(pass-by-reference)。方法接收到的是一份原来值的复制,对于基本数据类型,
所接收到的是一份该数据值的复制;而对于引用数据类型,所接收到的是一份该引用值的复制,而不是该
引用本身。
67、如果要在Java中达到像C/C++的通过引用传递的效果,一个办法是把数组作为参数。
68、除了声明为private的数据成员外,同一个包的类可以继承其他所有的数据成员,而其他包的类可以
继承public和protected的数据成员。这些准则适用于所有的数据成员(类或实例变量),同时也适应于
方法,但父类的构造函数并不会被继承。对定义为final的成员也无法被继承。
69、在使用方法重载时无法在同一个类中声明签名(方法名、参数数目、参数类型)相同但返回值不同的
方法。
70、将方法重载称为静态方法绑定或先期绑定,这是由于在编译时编译器会根据参数的类型和数目来决定
调用哪个方法,而不是在执行时决定。
71、可以将许多的类放在同一个文件中,但只能有一个类声明为public,其他的类称为辅助(helper)类
,辅助类也可包含main(),但会被忽略。
72、以下情况,此类必须声明为abstract:
该类有一个或超过一个abstract方法(声明但没有定义的方法)
该类从一个abstract类继承一个或超过一个abstract方法,但没有提供这些方法的实现方法
该类实现一个接口,但没有将该接口所有的方法加以实现
73、abstract方法不能被声明为private,因为abstract类会被其他类继承。无法生成一个abstract类的
对象,但可声明一个abstract类类型的变量。
74、多态(polymorphism)代表同样的表示法可用来处理多种不同类型的数据。重载是多态的一种,称为
静态多态。一般的多态是动态多态,是在执行时才根据对象来决定一个方法的行为,这是一种动态方法绑
定(后期绑定)。
75、C++中,多态通过虚拟函数实现,Java使用abstract类实现多态。
76、接口是用来表明一个类能做什么,但不表明如何完成(实际的工作会交由使用此接口的程序员来完成
),因此常使用接口来制定类设计的协议(protocol),而Java API设计的主要精神就是将接口和实际类
的实现分开,因为不同的系统可能会有不同的实现方法,但用户所使用的方式却是一样的,这可解决可移
植性问题。
77、接口和类一样可当作一种数据类型,但和abstract类一样,无法用它来生成新的对象。
78、一个接口是一群常量和abstract方法的组合,接口内的常量总是为public和static以及final(因此
,有时我们只会单纯地使用接口来存储用户自定义地常量而不包含任何方法),而方法总为public和
abstract,即使没有明确地声明。
79、一个类可通过关键字implements来实现接口,而类可实现一个以上的接口。
80、和类定义相同,一个接口可通过extends来继承其他接口,不同的是,接口支持多重继承,这是由于
接口内方法未定义,并不会产生类多重继承的问题。
81、和abstract类不同的是,当一个类实现接口,此类必须定义所有接口内的方法。
82、将接口和abstract类结合在一起。除了使用接口来进行多重继承外,一个常用的设计方式是使用接口
来生成新的数据类型,但不会被特定的实现方式限制住,这有点类似基本数据类型,并不会生成该类型的
对象,也没有实现任何方法。而abstract类也可用来定义新的数据类型,但会选择性地实现共同地方法。
当然,一般地类也可用来定义新地数据类型,但会实现全部地方法。因此,在设计一个较有扩充性地数据
类型时,往往会以接口为最上面一层,再以abstract类为中间的一层,而下面则为一般的类。
83、将类定义在另一个类内称为内部类。
84、匿名类是一种没有名称的内部类,它也没有构造函数。如:
button.addActionListener(new ActionListener()
{
用来实现ActionListener的程序主体
}//此对象仅用于addActionListener()中
)
85、在Java中,最常使用内部类和匿名类的地方是GUI。
86、由于匿名类并没有名称,因此生成的类文件会用数字表示,如Outer$1.class
87、垃圾回收:一个较好的方法是将不用的对象设为null。
88、强制执行垃圾回收:System.gc()。
89、finalize()是在对象释放前先执行,它是所有Java对象都会继承的方法。
90、生成包:只要在所定义的类程序的最前面加上package{packageName};放在import之前
- 上一篇: 学习Java的笔记(2)
- 下一篇: 学习Java的笔记(4)