关于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
- 关于Java程序中类定义对象的处理,以及类中变量与方法的运行过程
- Java中定义类,对象,函数,变量的方法
- java中定义类对象的过程
- JAVA程序运行过程中成员变量的执行顺序
- java中关于编译期间和程序运行期间的对象的处理
- java类中方法和变量的定义顺序
- java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:
- java中类的定义与对象的创建
- 关于java中对象的定义
- java中如何去理解 类,对象(实例),方法,类变量,对象(实例)变量的区别与联系
- python中类的定义、实例化、封装以及私有变量/方法
- 关于java中final方法,类,成员变量的讨论
- 黑马程序员1——关于Java的继承过程中成员变量与方法的隐藏与覆盖
- mysql 存储过程中变量的定义与赋值操作
- mysql 存储过程中变量的定义与赋值操作
- java中初始化对象变量的方法
- java中变量的定义以及运算符
- 关于C++中定义对象及对象初始化的方法
- PTA 哥尼斯堡的“七桥问题”(欧拉回路)
- 最大子阵
- n个元素进栈,共有多少种出栈顺序(公式)
- ListView_ArrayAdapter学习笔记
- 20170308-leetcode-445-Add Two Numbers
- 关于Java程序中类定义对象的处理,以及类中变量与方法的运行过程
- jsh和jq(jquery)的区分区别2(共三篇,详见我csdn)
- xvfb的安装、配置、运行(Linux)
- 无权二分图的最大匹配(匈牙利算法)
- B. Maximal Area Quadrilateral(叉积模板)
- 搜索题-危险系数
- Session的理解与深入
- Event-Souring模式
- WINDOWS系统下NODEJS、NPM、EXPRESS的下载和安装教程