2017年4月22日继承
1、构造方法:
构造方法的名称和类型相同,没有返回值类型。构造方法的主要作用就是在创建对象时执行一些初始化操作,如给成员属性赋初始值。
2、构造方法的重载:
如下例中的三个构造方法,方法名相同,参数列表不同,这称为构造方法的重载。
public class Penguin { String name = "无名氏"; // 昵称 int health = 100; // 健康值 public Penguin() { name = "小明"; health = 40; } /** * 构造方法的重载 */ public Penguin(String name, int health) { this.name = name; this.health = health; } }
3、构造方法的相互调用
public class Test{ public String name; public Test(String name) { this.name = name; } public Test(){ this.("飞飞"); } }
4、static
public class StaticTest { static int i; static int m = 30; int j; int k = 25; static{ i =10; System.out.println("i的初始化值为:"+i); } public StaticTest() { j = 20; System.out.println("j的初始化值为:"+i); } public static void getNum(){ System.out.println("得到i的值为:"+i); } public static void main(String[] args) { StaticTest st = new StaticTest(); System.out.println("i的值为:"+StaticTest.i); st.getNum(); System.out.println("m的值为:"+st.m); System.out.println("k的值为:"+st.k); } }
输出结果为:
i的初始化值为: 10
j的初始化值为: 10
i的值为: 10
得到i的值为: 10
m的值为: 30
k的值为: 25
由上面的例子可以看出,在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的。
5、new关键字的3个作用
①开辟空间,向jvm索要空间
②创建对象
③调用构造
6、两种方式给数组赋值
Static Level [] levels = new Level [6];//_null_null_null_null_null_null_为null时:不能使用它的任何属性和方法
//第一种方法
levels [0] = new Level[];
//第二种方法
Level level = new Level();
level.name ="飞飞";
levels [0] = level;
7、equals在进行字符串对象的对比时,对比的是真实内存,其他的都对比内存地址,和"=="一样。除非程序员手动重写equals方法
8、揭秘子类构造的执行过程
Parent parent=new Child();
从main函数======>子类构造------>进入父类构造------>执行父类构造体------->子类构造体执行------>回到main