1.什么是继承?
继承就是将父类的变量和方法继承给子类。也就是新建一个类,而这个类可以调用父类中的变量和方法。而且在这个基础上,子类还可以额外有自己的变量和方法。
例如,我们可以创立一个类叫做人,人具有名字、年龄的变量,又有对这些变量的set和get方法。之后再建立一个学生类,学生类继承人这个类,基友名字、变量,又有学号、成绩等变量。也就是在人这个类的基础上额外实现了一些功能。
2.继承有什么好处呢?
1)继承可以方便我们代码的书写。比如教师类也有名字和年龄,同样可以继承人这个类,这样我们不用再将这些代码写一遍。
2)继承可以方便我们对程序的维护,当我们要对名字这个变量和某些方法进行修改的时候,我们直接对人这个进行修改即可,而不用到每一个子类中进行重复的修改。
3.继承也有不好的地方。
当你将一个类继承了另一个类的时候,那么子类的独立性就降低了,你对父类的修改也会影响到子类。所以在使用继承的时候一定要确定这两个类之间的关系是适合使用继承的。
而继承的关系一般是包含的关系,例如水果包含了西瓜、苹果、香蕉等等。那么我就可以定义一个水果类作为西瓜的父类。而西瓜和苹果不是包含关系,虽然二者也有很多的共同点,但不适合使用继承。
4.继承的代码书写
以代码为例:
我们先定义一个人类作为父类:
public class People {
private String name;
private String age;
int test = 4;
public People() {
}
public People(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public void test()
{
int test = 3;
System.out.println(test);
}
}
之后是名为Student的子类
public class Student extends People {
private String id;
private String scores;
int test = 2;
public Student() {
}
public Student(String name, String age, String id, String scores) {
super(name, age);
this.id = id;
this.scores = scores;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getScores() {
return scores;
}
public void setScores(String scores) {
this.scores = scores;
}
public void test(){
int test = 1;
//可以看到这里输出的是子类的局部变量,为1
System.out.println(test);
//加上this关键字可以得到子类的成员变量;
System.out.println(this.test);
//同过super关键字可以调用父类的方法;
super.test();
//通过super方法得到父类的成员变量;
System.out.println(super.test);
}
}
之后对这两个类进行测试
public class Demo1 {
public static void main(String[] args) {
Student s = new Student("name", "11", "1231132", "100");
//通过子类调用父类中的方法,查看父类中的变量
System.out.println(s.getName());
//测试Java查询变量的顺序
s.test();
}
}
结果如下:
可以看到,子类可以直接调用父类的方法,使用父类中的变量;
我们在代码中定义了4个test变量,分别是子类的成员变量和局部变量、父类中的成员变量和局部变量。
而java执行时查询的先后顺序为,子类局部变量、子类成员变量、父类局部变量、父类成员变量。