继承

来源:互联网 发布:淘宝电子烟店铺排名 编辑:程序博客网 时间:2024/06/10 15:12

在创建一个新类(子类、导出类)时,使用extends关键字表明它派生于一个已经存在的类(父类、基类、超类),导出类会获得基类的所有域和方法,但并不是一定能直接访问,和访问权限控制有关。和组合相比,继承是隐式的放置基类子对象

package reusing;/** * 继承是隐式的放置基类对象 * @author 小锅巴 @date 2016年3月20日 * http://blog.csdn.net/xiaoguobaf */class Villain{    private String name;    public Villain(String name){        this.name = name;    }    protected void set(String name){        this.name = name;    }    public String toString(){        return "In Villain class, "+"name: "+name;    }}public class Orc extends Villain{    private int orcNumber;    public Orc(String name, int orcNumber){        super(name);        this.orcNumber = orcNumber;    }    /**     * set方法是public的,导出类可直接访问,但是name是被封装在基类中,导出来中不能直接访问,但是可通过从基类继承的set方法间接访问,     * 上面的构造器也是,使用的关键字super来调用基类的构造器     */    public void change(String name, int orcNumber){           set(name);        this.orcNumber = orcNumber;    }    public String toString(){        return "In Orc class, "+super.toString()+" orcNumber: "+orcNumber;    }    public static void main(String[] args) {        Orc o = new Orc("Limburger", 12);        System.out.println(o);        o.change("Bob", 19);        System.out.println(o);    }}/** * 输出:In Orc class, In Villain class, name: Limburger orcNumber: 12In Orc class, In Villain class, name: Bob orcNumber: 19 */
原创粉丝点击