关于Java程序中类定义对象的处理,以及类中变量与方法的运行过程

来源:互联网 发布:金和网络做什么的 编辑:程序博客网 时间:2024/06/03 05:47

*首先先理解创建一个对象时,系统所要完成的3个工作:
1>为每个对象分配不同的存储空间,即不同的实例化对象要有不同的地址空间;(也可以理解为有多个对象同时指示着同一个实例)
2>如果类定义有初值,使用该值对成员变量进行初始化;如果没有,可以使用默认值;
3>自动调用构造函数,如果构造方法有多个,则根据参数类型、个数选择调用哪个构造方法;
看如下一个程序:
package 复数;

class Circle {
float x, y;
float radius;

double getArea() {    return radius * radius * 3.1415926;}double getCircumference() {    return 2 * radius * 3.1415926;}public static void main(String args[]) {    Circle c = new Circle();    c.radius = 3;    c.x = 0;    c.y = 0;    System.out.println("Area=" + c.getArea());    System.out.println("getCircumference=" + c.getCircumference());}

}
我们都知道由类定义一个对象,在定义这个对象时,可以直接调用了类中的构造方法对类中的变量进行初始化。
同时定义一个类时可以写构造函数也可以不写构造函数,在有构造函数时我们可以按照上述的方法对新定义的对象进行初始化,但是当没有写构造函数时系统自然也会有一种默认的处理方式。就是如上述程序中写的那样Circle c = new Circle();只是此中的形式不对c对象中的变量做初始化。想要对c对象中的变量初始化可用这种形式c.x = 0;当这些变量被初始化之后则Circle类中的其他方法也就认为这些变量已知,如c.getArea()这中操作也就可以被执行了。
在此延伸一下构造函数的某些功能:子类在继承一个超类时,构造函数是不可以被继承的。一个类要想获得一个构造函数只有两种办法,一是重写构造函数(即将超类中的构造函数形式借过来但是名字要改成自己的类名),一是根本不写构造函数,这时系统为每个类生成一个默认的构造函数这与上述的Circle c = new Circle()对应;

0 0
原创粉丝点击