首页 > 代码库 > Java继承
Java继承
public class Employee { public static String superStr = "SUPERSTR"; public String test() { return "SUPERTEST"; } public String test2() { return "SUPERTEST2"; } }
public class Manager extends Employee { public static void main(String[] args) { System.out.println(superStr);// 直接访问父类域 Manager mgr = new Manager(); String t1 = mgr.test();// 直接访问父类方法 String t2 = mgr.test2();// 覆盖父类方法 System.out.println(t1 + "\n" + t2); } @Override public String test2() { return super.test2() + "#test2"; } }父类Employee有public的域和方法,子类Manager覆盖了父类的一个方法。从代码中的注释可清楚地知道:子类可直接访问父类的公有域或方法,但若子类覆盖了父类的域或方法,就按覆盖的本意来。
输出结果:
SUPERSTR
SUPERTEST
SUPERTEST2#test2
简单来说,上面的Manager继承Employee后,它的代码实质上等同于:
public class Manager extends Employee { //***********父类域************************** public static String superStr = "SUPERSTR"; public String test() { return "SUPERTEST"; } /*public String test2() { return "SUPERTEST2"; }*/ //***********父类域************************** public static void main(String[] args) { System.out.println(superStr);// 直接访问父类域 Manager mgr = new Manager(); String t1 = mgr.test();// 直接访问父类方法 String t2 = mgr.test2();// 覆盖父类方法 System.out.println(t1 + "\n" + t2); } @Override public String test2() { return super.test2() + "#test2"; } }
继承设计技巧:
1)将公共操作和域放置在超类
2)不要使用受保护的域(protected)
3)使用继承实现"is-a"关系
4)除非所有继承的方法都有意义,否则不要使用继承
5)在覆盖方法的时候,不要改变预期的行为
6)使用多态,而非类型信息
7)不要过多地使用反射
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。