继承
继承概述:
实际开发中,我们发现好多类中的内容是相似的,于是我们就把这些相似的内容抽取出来放到一个类中,
然后让那多个类和这个类产生一个关系,这个关系就是继承. 继承用 extends 关键字表示.
继承的例子:
1 public class Person { //定义一个类
2 String name;
3 int age;
4
5 public Person() { ////alt+shift+s 自动生成 构造方法
6 super();
7 // TODO 自动生成的构造函数存根
8 }
9
10 public Person(String name, int age) { //alt+shift+s 自动生成 构造方法
11 super();
12 this.name = name;
13 this.age = age;
14 }
15
16 public String getName() { ////alt+shift+s 自动生成get方法
17 return name;
18 }
19
20 public void setName(String name) { //alt+shift+s 自动生成 set方法
21 this.name = name;
22 }
23
24 public int getAge() {
25 return age;
26 }
27
28 public void setAge(int age) {
29 this.age = age;
30 }
31
32 public void eat() { //自定义的方法
33 System.out.println("老师在吃饭");
34 }
35 }
Person类中有属性Name,属性age,构造方法,行为方法。
如果定义多个类都需要重复写这些代码我们就应该使用继承。
如:定义一个学生类,工人类,教师类。
1 public class Student extends Person{
2 public void eat() { //重写eat方法
3 System.out.println("学生在吃饭");
4 }
5 }
以学生类为例,同样有属性Name,属性age,所以继承了Person类就
可以不用声明这些属性,构造方法了。但是eat方法里输出的是老师而
不是学生,所以需要重新在学生类中重新定义。
1 public class Test {
2
3 public static void main(String[] args) {
4 Student s = new Student(); //new一个学生类
5 s.name = "B.Lasting.尊"; //设置名字
6 s.age = 18; //设置年龄
7 s.eat(); //调用eat方法
8 }
9
10 }
随笔说:
继承提高了代码的复用性,但是也有弊端。子类只能继承父类的非私有成员。(成员变量和成员方法)
子类不能继承父类的构造方法,但是可以通过super来使用。不要为了部分功能而去使用继承。