继承的概念:继承是一个对象获得另一个对象的属性和方法的过程;
继承的作用:提高代码的复用性、提高程序的扩展性
继承的关键字: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