2013 - 01 - 18 Lesson_8 继承
1 /*********************************************************** 2 * Lesson_8_1 3 * 4 * 继承(inheritance) 5 * 13-01-18 6 * note by CocoonFan 7 ************************************************************ 8 ************************************************************ 9 * 一.内存 10 * 1.代码存放在代码段; 11 * 局部变量和基本数据类型存放于栈; 12 * 引用类型存放于堆中; 13 * 静态变量(static)、字符串存放于数据段。 14 * 二.继承 -- 代码的重用 15 * 1.利用现有的类(基类或父类)创建新的类(派生类或父类) 16 * 2.派生类:基类的方法 + 附加的方法 17 * 3.层次越高越抽象 18 * 4.[访问修饰符] class 派生类名 extends 基类名 {} 19 * 5.Java只支持单继承 20 * 6.父类中的构造方法不能被子类继承 21 * 7.子类的构造方法只需要考虑自己的成员变量,不必考虑父类的成员变量 22 * 8.实例化子类对象的时候,先执行父类的构造方法再执行子类的构造方法 23 * 有多级构造方法的时候类似.此时会创建匿名的父类对象,之后JVM会 24 * 将其回收. 25 * 9.如果父类的构造方法失败,子类的构造方法也不能成功 26 * 10.所有对象有一个顶级父类 Object 27 * 二.super关键字 28 * 1.必须是子类构造方法的第一条语句 29 * 2.用于显式地指明调用父类的构造方法super([参数1,...]); 30 * 3.不写会默认调用父类无参的构造方法 31 * 4. 32 * 33 ************************************************************/ 34 35 public class Lesson_8{ 36 public static void main(String[] args) { 37 38 Animal animal = new Animal(); 39 animal.sleep(0); 40 41 Cat cat = new Cat(); 42 cat.sleep(2); 43 44 cat.setName("波斯猫");//父类(animal)的名字name并不会改变 45 System.out.println(cat.getName()); //波斯猫 46 System.out.println(animal.getName()); // null 47 } 48 } 49 50 class Animal{ //父类 51 52 private String name; 53 private int age; 54 55 //构造方法 56 public Animal(){ 57 System.out.println("动物的构造方法"); 58 } 59 60 public Animal(String name, int age){ 61 this.name = name; 62 this.age = age; 63 System.out.println("动物的带2个参数的构造方法"); 64 } 65 66 public String getName() { 67 return name; 68 } 69 70 71 public void setName(String name) { 72 this.name = name; 73 } 74 75 76 public int getAge() { 77 return age; 78 } 79 80 81 public void setAge(int age) { 82 this.age = age; 83 } 84 85 86 public void sleep(int hour){ 87 System.out.println("动物能睡觉,已经睡了" + hour + "个小时了"); 88 } 89 90 } 91 92 class Cat extends Animal{ 93 private String color;//属于Cat 94 95 public Cat(){ 96 super(); 97 } 98 99 public Cat(String color){100 super("", 0);//会调用父类带有两个参数的构造方法101 this.color = color;102 System.out.println("猫的构造方法");//会先调用父类的构造方法103 }104 }