继承
来源:互联网 发布:淘宝电子烟店铺排名 编辑:程序博客网 时间: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 */