【Java概念】构造方法、this、super(6)
来源:互联网 发布:谢娜主持过的网络节目 编辑:程序博客网 时间:2024/04/30 18:07
构造方法
package cn.hncu.program.construct;import java.util.Calendar;import org.junit.Test;/** * 项目名:构造方法、this、super * 时间 :2017-9-11 上午8:57:23 */public class Construct { /* * <1>【创建一个对象】:new对象,调用构造方法创建堆内存内容,栈内存中创建引用。 */ @Test public void t1(){ MyDate date = new MyDate(); date.showString();//通过对象访问成员方法 } /* * <2>【初始化】:成员变量初始化、构造器初始化、static初始化 * 1.在一个类中,成员变量首先进行初始化,其次构造器才开始初始化。---初始化顺序 * 2.Java 尽自己的全力保证所有变量都能在使用前得到正确的初始化。 * 3.static类型的成员变量初始化仅发生一次,在Class 对象首次载入的时候。---static成员变量初始化 * 4.static初始化块: */ @Test public void t2(){ //两次生成的随机数是相同的,这是因为:static初始化仅发生一次,在Class 对象首次载入的时候。 new Initialization().showStatic();//0.8631562390021554 new Initialization().showStatic();//0.8631562390021554 System.gc(); } /* * <3>【对象创建过程】: * 1.类型为MyDate的对象首次创建时,或者首次访问其类的static方法/static字段时, * Java解释器必须首先找到MyDate.class(在事先设置好的路径里找)。 * 2.找到MyDate.class(它会创建一个Class对象),它的所有static初始化模块都会运行。 * 因此static初始化仅发生一次,在Class对象首次载入的时候。 * 3.创建一个new MyDate()时,MyDate对象的构建进程首先会在堆内存(Heap)里为一个MyDate对象分配足够多的存储空间。 * 4.在堆内存中为所有的基本数据类型设置默认值。 * 5.进行字段定义的时候所发生的所有初始化都会执行。 * 6.执行构建器(继承的时候比较复杂)。 * * <4>【子类继承父类时的构建器创建】: * 1.一个子类继承父类后,如果父类含有一个有参构造方法,子类不写任何的构造方法,编译期会出错。 * 2.这是因为,在父类中,父类的有参构造方法覆盖了空参构造方法,从而创建子类的时候无法调用父类的 * 空参构造方法,因此编译期会出错。不管是继承抽象类还是普通类都会出错,因此子类必须自己写 * 与父类参数相同的有参构造方法。 */}/* * 构造方法演示: */class MyDate{ private int year; private int month; private int day; /* *【构造方法】: *1.名称和类名完全相同,没有返回类型。 */ public MyDate(int year,int month,int day){ this.year = year; this.month = month; this.day = day; } public MyDate(MyDate d){ this(d.year, d.month, d.day); } /* * 【构造方法】: * 1.空参构造方法,当不写构造方法的时候,Java会自动帮我们添加一个默认的构造方法。 * 但当我们自己写了有参构造方法,Java不会帮我们添加了,因此此时要使用默认构造方法得自己手动添加。 * 2.默认构造方法:空参、空方法体---仅仅是开内存并初始化所有成员变量。 * 3.构造方法 执行了两步:1)开内存(堆内存)并初始化所有成员变量,2)执行构造方法内部的代码。 * 4.由系统调用,构造方法是回调用方法。 * 5.构造方法调用构造方法由this调用。--this(1970, 1, 1); * 【关于构造方法说明】: * 6.构造方法在一个对象被new时执行。 * 7.一个类可以定义多个构造方法,构造方法可以被重载。 * 8.构造方法必须与类同名,方法可以与class同名。 * */ public MyDate(){ this(1970, 1, 1); //super();---9.【super】是调用父类里的构造方法,但是super和this必须都在第一行,因此不能同时出现。 } /* * 【this】: * 1.this指代的是 当前对象。 * 2.this.year指代当前对象中的成员变量。---当前对象就是当前类所对应的类--即当前类MyDate * 3.this语句只能放在构造方法的第一行。 * */ public void setYear(int year){ this.year = year; } public void showString(){ System.out.println(year+","+month+","+day); } @Override public String toString() { return "MyDate [year=" + year + ", month=" + month + ", day=" + day + "]"; }}class Initialization{ /* * 【static成员变量】 */ public static double d = Math.random(); /* * 【static块】: * 要给静态变量赋值,同时无法用一行赋值代码即要写多行代码,这时通常用静态块来完成。 */ static{ Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); year = (int) (year + d); } public void showStatic(){ System.out.println(d); }}
阅读全文
0 0
- 【Java概念】构造方法、this、super(6)
- [java]构造方法super() this()
- 构造方法,super,this
- 使用Java的子类调用构造方法super()和this()
- java中this用法 super()用法 以及构造方法
- [Java] super,this 的区别及构造方法的使用
- java继承中的构造方法及this,super的使用
- Java面向对象——构造方法和关键字(static、this、final、super)
- [疯狂Java]面向对象:构造器(this、super)
- java构造方法与super
- java-构造方法-super关键字
- Java中子类继承构造方法 和 super this用法的一个总结
- java构造方法,以及super、this关键字、隐式调用、显式调用
- 为什么java的构造方法中this()或者super()要放在第一行
- Java中的构造方法总结和this及super的使用
- 构造,super,this
- 构造函数,super,this
- 为什么java构造函数的构造器只能在第一行写this() super()
- windows 小窍门整理
- UVA 3883 某区间的素数 【素数筛法】
- POJ 1426 Find The Multiple【同余模定理+BFS||二叉树+鸽巢】
- 加1乘2平方(广搜)
- 互联网软件的开发和发布流程
- 【Java概念】构造方法、this、super(6)
- geohash编码
- hdu 5821 Ball 贪心+思维
- Angular Webapp常见的结构图
- oracle权限查看
- ubuntu重启、关机命令
- windbg-内存破坏实例分析
- 欢迎使用CSDN-markdown编辑器
- Java数据类型和MySql数据类型对应一览