在面向对象编程语言中,继承是为了代码的重复利用,在java中,使用extends(继承)关键字,
实现继承,以期达到子类(children-class)重复利用基类(base-class)的非私有属性和方法的目的。
eg:
基类(父类):
package com.lanhuigu.test; /** * 师父拥有唱歌,跳舞,游泳的技能,其中可以将唱歌,跳舞教给徒弟, * 而游泳则没有教给徒弟,而是作为自己的一项特殊技能。 */ public class Parent { public String song() { return "唱歌"; } public String dance() { return "跳舞"; } private String swimming() { return "游泳"; } }
子类:
package com.lanhuigu.test; /** * 徒弟从师父哪里学到了唱歌,跳舞,自己练就了编码的能力 */ public class Children extends Parent{ public String code() { return "编码"; } }
测试:
package com.lanhuigu.test; public class Test { public static void main(String[] args) { /***徒弟拥有的技能***/ Children children = new Children(); System.out.println(children.song());// 唱歌:从师父哪里学来的 System.out.println(children.dance());// 跳舞:从师父哪里学来的 System.out.println(children.code());// 编码:自身修炼而成 // 徒弟未成得到师父游泳的真传,自身也没有修炼,所以不会游泳 //System.out.println(children.swimming()); System.out.println("========================="); /***师父拥有的技能***/ Parent parent = new Parent(); System.out.println(parent.song());// 唱歌 System.out.println(parent.dance());// 跳舞 /* * 这个地方看不到师父游泳的技能,因为private是私有的,只能在本类中访问, * 所以师父的游泳必杀技不足为Test这个外人知道,外人只能知道其会唱歌,跳舞, * 不知其会游泳 */ //System.out.println(parent.swiming()); } }
代码分析:
基类Parent,拥有公开(public)类型的song,dance方法,私有(private)类型的swimming方法,
子类children继承了父类的song,dance方法,自身新增了code方法,
子类实现了重用父类的song,dance方法,同时子类也可以新增自己的方法,比如code方法,
从而达到继承的目的。也即,子类可以重用父类的非私有属性和方法,同时子类可以新增属性和方法。
程序运行结果:
唱歌 跳舞 编码 ========================= 唱歌 跳舞