达内潍坊中心 > 达内新闻
Java学习与运用之面向对象:构造方法、this再探
- 发布:山东IT培训
- 来源:互联网
- 时间:2018-01-08 19:48
在开发中,经常需要在创建对象的同时明确对象对的属性值,比如一个Person对象创建时候就应该有age和name等属性那么如何做到在创建对象的同时给对象的属性初始化值呢?
这里介绍构造方法:
1.构造方法没有返回值类型,更没有返回值,因为它是构建对象的,对象创建完,方法就执行结束
2.构造方法名必须和类型保持一致
3.构造方法什么时候运行呢?答:在创建对象的时候自动执行,而且只运行一次
定义示例:
public class Person { public Person(){ System.out.println(“我是一个空参数的构造方法”); }}
运行:
public class Test { public static void main(String[] args) { Person p = new Person(); }}//输出:我是一个空参数的构造方法
构造方法是每个类的必须内容,写或者不写都存在
编译器(javac)在编译的时候会检测是否有构造方法,如果有,执行,如果没有,自动创建一个空参数空内容的构造方法
构造方法的赋值:
public class Person { private String name; private int age; public Person(String name,int age){ this.name = name; this.age = age; }}public class Test { public static void main(String[] args) {
Person p = new Person(“张三”,18); }}
构造方法内存分析:
1.main方法进栈运行,内容只有一行:创建对象
2.堆中开空间存入对象,并带有两个参数
3.两个私有变量跟随进入堆内存,并赋默认值(null,0)
4.对象把自己的地址传给this关键字
5.对象调用自己的构造方法,构造方法进栈运行,并且对象把两个参数传入
6.构造方法用this.的方式访问堆内存的对象并给成员变量赋值
7.构造方法运行结束,对象建立完成,地址传给p
构造方法是可以重载的
示例:
public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; }}public class Test { public static void main(String[] args) {
Person p = new Person(“张三”, 18); Person p1 = new Person(); }}
this在构造方法之间的调用:
public class Person { private String name; private int age; public Person() { //this()是调用其他的构造方法 //this()必须写在构造方法第一行this(“张三”, 20); } public Person(String name, int age) { this.name = name; this.age = age; }}
public class Test { public static void main(String[] args) { Person p1 = new Person(“张三”, 18); Person p2 = new Person(); }}
内存原理:
1.main方法进栈运行,在堆中开空间创建对象,成员变量跟随并赋默认值
2.对象调用自己的构造方法,调用空参数构造,进栈运行,实参传递
3.调用了有参数构造方法,有参构造方法进栈运行
4.赋值完成有参构造方法结束,空参构造方法结束,然后对象创建完成
5.对象地址传给p1(p2)
更多潍坊达内怎么样相关资讯,请扫描下方二维码
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 哈尔滨
- 济南
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 长沙
- 昆明
- 太原
- 无锡
- 石家庄
- 南宁
- 佛山
- 珠海
- 宁波
- 保定
- 呼和浩特
- 洛阳
- 烟台
- 运城
- 潍坊
Java学习与运用之面向对象:构造方法、this再探
- 发布:山东IT培训
- 来源:互联网
- 时间:2018-01-08 19:48
在开发中,经常需要在创建对象的同时明确对象对的属性值,比如一个Person对象创建时候就应该有age和name等属性那么如何做到在创建对象的同时给对象的属性初始化值呢?
这里介绍构造方法:
1.构造方法没有返回值类型,更没有返回值,因为它是构建对象的,对象创建完,方法就执行结束
2.构造方法名必须和类型保持一致
3.构造方法什么时候运行呢?答:在创建对象的时候自动执行,而且只运行一次
定义示例:
public class Person { public Person(){ System.out.println(“我是一个空参数的构造方法”); }}
运行:
public class Test { public static void main(String[] args) { Person p = new Person(); }}//输出:我是一个空参数的构造方法
构造方法是每个类的必须内容,写或者不写都存在
编译器(javac)在编译的时候会检测是否有构造方法,如果有,执行,如果没有,自动创建一个空参数空内容的构造方法
构造方法的赋值:
public class Person { private String name; private int age; public Person(String name,int age){ this.name = name; this.age = age; }}public class Test { public static void main(String[] args) {
Person p = new Person(“张三”,18); }}
构造方法内存分析:
1.main方法进栈运行,内容只有一行:创建对象
2.堆中开空间存入对象,并带有两个参数
3.两个私有变量跟随进入堆内存,并赋默认值(null,0)
4.对象把自己的地址传给this关键字
5.对象调用自己的构造方法,构造方法进栈运行,并且对象把两个参数传入
6.构造方法用this.的方式访问堆内存的对象并给成员变量赋值
7.构造方法运行结束,对象建立完成,地址传给p
构造方法是可以重载的
示例:
public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; }}public class Test { public static void main(String[] args) {
Person p = new Person(“张三”, 18); Person p1 = new Person(); }}
this在构造方法之间的调用:
public class Person { private String name; private int age; public Person() { //this()是调用其他的构造方法 //this()必须写在构造方法第一行this(“张三”, 20); } public Person(String name, int age) { this.name = name; this.age = age; }}
public class Test { public static void main(String[] args) { Person p1 = new Person(“张三”, 18); Person p2 = new Person(); }}
内存原理:
1.main方法进栈运行,在堆中开空间创建对象,成员变量跟随并赋默认值
2.对象调用自己的构造方法,调用空参数构造,进栈运行,实参传递
3.调用了有参数构造方法,有参构造方法进栈运行
4.赋值完成有参构造方法结束,空参构造方法结束,然后对象创建完成
5.对象地址传给p1(p2)
更多潍坊达内怎么样相关资讯,请扫描下方二维码
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 厦门
- 哈尔滨
- 济南
- 福州
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 大连
- 长沙
- 昆明
- 温州
- 太原
- 南昌
- 无锡
- 石家庄
- 南宁
- 中山
- 兰州
- 佛山
- 珠海
- 宁波
- 贵阳
- 保定
- 呼和浩特
- 东莞
- 洛阳
- 潍坊
- 烟台
- 运城