class="p0" style="margin-top: 0pt; margin-bottom: 0pt;">继承的概念:继承是一个对象获得另一个对象的属性和方法的过程;
继承的作用:提高代码的复用性、提高程序的扩展性
继承的关键字:extends
继承的语法格式:访问修饰符?class?类名?extends?class类名{}
例如:Public?class?A(子类或超类)?extends?class?B(父类或基类){}
继承时子类与父类的关系:
a.子类能继承到父类所有的属性和方法;
b.当子类和父类在同一包下,子类能调用父类中公有的、受保护的、默认的属性和方法,而不能调用父类中私有的属性和方法;
c.当子类和父类不在同一个包中,子类能调用父类中公有的、受保护的方法,而不能调用父类中默认的和私有的属性和方法;
d.如果父类中的方法是有方法体的,则子类可以直接使用,或者重写后再使用,当子类的对象调用方法时优先调用子类中重写的方法,如果子类中没有重写方法再调用父类中的方法
如果父类中的方法是没有方法体的,则子类必须要重写后再使用;
代码例子:
定义一个大学生类继承学生类
/** * 学生类 */ public class Student { private String name = null;// 姓名属性 private int score = 0;// 学分属性 private int age; private char sex; /** * 构造方法 * * @param n要被付给name属性值的参数名 */ public Student(String name) { this.name = name; } /** * 构造方法 */ public Student() { // this("abc"); } // 设置姓名属性值的方法 public void setName(String name) { this.name = name; } // 获取姓名属性的值 public String getName() { return name; } // 设置学分属性值的方法 public void setScore(int s) { score = s; } // 获取学分属性值的方法 public int getScore() { return score; } // 学生的学习方法 protected void study() { // 让学分加1 score++; System.out.println(name + "学习Java语言,学分是:" + score); } } /** * 大学生类 * */ public class UNStudent extends Student { private String major;//专业 /** * 玩的方法 */ public void play(){ int score = getScore(); score--; setScore(score); System.out.println(getName()+"在玩游戏,学分下降1,剩余学分为:"+getScore()); } /** * 重写父类的学习方法 */ public void study(){ System.out.println(getName()+"的学方式是不同的!"); } } /** *主函数类 */ public class TestMain { //程序的入口主函数 public static void main(String[] args) { //实例化一个UNStudent类的对象 UNStudent un = new UNStudent(); //调用属性和方法 私有的不能被调用 un.setName("王五"); un.setScore(1); un.study(); un.play(); } } 输出结果:王五的学习方式是不同的! 王五在玩游戏,学分剩下1,剩余学分为:0
?
?