• Lesson_8 上课笔记 继承


    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 }
  • 相关阅读:
    hadoop 2.x 简单实现wordCount
    httpClient连接超时设置
    Java io使用简介
    log4j使用教程
    F#中的自定义隐式转换
    Computation expressions and wrapper types
    Introducing 'bind'
    Understanding continuations
    Computation expressions: Introduction
    MySQL优化总结,百万级数据库优化方案
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2867028.html
Copyright © 2020-2023  润新知