面向对象,J2SE面向对象的几点总结

1.对成员变量的操作只能放在方法中,方法可以对成员变量进行操作形成算法。如:
class A{
int a=9;
float v=12.6f;
void f(){
a=12;
b=12.56f;


以上是可以的,但是不可以这样:
class A{
int a;
float b=12.b;//非法的,这是赋值语句,不是变量声明
a=12.56f;
void f(){}
}
2.构造方法是一种特殊的方法,它的名字必须与它所在类的名字完全相同,而且没有类型。Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,或者参数的类型不同,或者参数的个数不同。如果子类方法中没有显示的调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。
3.生成一个对象时,成员变量在heap中分配内存空间。当对象调用方法时,方法中的局部变量被分配内存空间,生成在stack中。方法执行完毕,局部变量即刻释放内存。局部变量声明时如果没有初始化,就没有默认值,因此在使用局部变量之前,要事先为其赋值。
4.static关键字。
方法声明中用关键字static修饰的称为类方法或静态方法,不用static修饰的叫做实例方法。实例方法可以调用类中的类方法和实例方法,类方法只能调用类中的类方法,不能调用实例方法。
在使用静态类时要注意下面几点:
(1)在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可以使用,而静态方法在使用前部用创建任何对象。
(2)静态方法不能以任何方式引用this和super关键字。因为静态方法在使用前部用创建任何实例对象,当静态方法被掉用能够时,this所引用的对象根本没有产生。
(3)main()方法是静态的,因此jvm在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能同类通过这个对象去访问类中的非静态成员。
(4)static对象存放在data seg,可以直接用类名.变量名。
5.object类。查询jdk api中java.lang.Object。
public String toString();通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。
结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。注意:编程员的好习惯——为了
防止重写的时候写错,我们最好去jdk api中复制方法名。
public boolean equals(Object obj);如下程序:
image面向对象,J2SE面向对象的几点总结
返回值为false,因为比较的是两个对象的内存地址,没new一次就分配一个不
同的内存地址,所以比较后两个值不相等。
“for any non-null reference values x and y, this method returns true if and _disibledevent=> has the value true).”
“对于任何非空引用值 xy,当且仅当 xy 引用同一个对象时,此方法才返回 truex == y 具有值 true)”
所以为了比较两个对象的是否相等可以用此方法比较,但是默认的equals方法和c1==c2是一样的,所以要重写equals方法,在方法内部实现比较。程序如下:
imageimage面向对象,J2SE面向对象的几点总结
imageimageimage面向对象,J2SE面向对象的几点总结
当然还有一些类如String也重写了equals方法,此处我就不介绍了,可以参考api文档自学下。
6.package和import语句
class文件的最上层包的父目录必须位于classpath下。如果出现不符合这一情况的时候,可以设置classpath来解决,当然如果你是用eclipse编译的话,ide自动帮你为每一个项目设置不同的classpath,解决了这一冲突。
在jdk\jre\lib\rt.jar中是jdk运行时的类文件存放的位置。其中java.lang这个包中的类不需要引用,可以直接使用。
用命令提示符语句打jar包:
imageimageimageimage面向对象,J2SE面向对象的几点总结
将jar包加到classpath中,就可以找到jar中的类了。
7.接口是抽象方法和常量值的定义的集合。是一种特殊的抽象类,只包含常量和方法的定义,而没有变量和方法的实现。
Tags:  面向对象编程 面向对象技术 什么是面向对象 面向对象程序设计 面向对象

延伸阅读

最新评论

发表评论