所谓继承,从字面上理解也可以是子继父承,就是指一个类拥有另一个类全部的属性(除了访问修饰符为private)和方法,但又包含其他的方法。
还是从代码中慢慢理解的好,例如下面代码:
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访问修饰符,因为使用其他修饰符的时候,接口中的属性和方法就变得毫无意义了,要注意的是,接口中的方法是抽象方法,没有方法体,在实现接口时,必须实现所有的抽象方法,才算是对这个接口的真正实现。
在接口实现的时候,还有些小细节需要注意:
后期团队开发大量使用接口。
继承方法和实现接口必须按先后顺序开始。
接口的常量名字必须大写
接口能够多次继承,继承多个接口。
还是从代码中慢慢理解的好,例如下面代码:
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访问修饰符,因为使用其他修饰符的时候,接口中的属性和方法就变得毫无意义了,要注意的是,接口中的方法是抽象方法,没有方法体,在实现接口时,必须实现所有的抽象方法,才算是对这个接口的真正实现。
在接口实现的时候,还有些小细节需要注意:
后期团队开发大量使用接口。
继承方法和实现接口必须按先后顺序开始。
接口的常量名字必须大写
接口能够多次继承,继承多个接口。