继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。
继承可以理解为一个类从另一个类获取方法和属性的过程。如果类
B 继承于类
A ,那么B 就拥有A 的方法和属性。
继承使用 extends 关键字。(参考网站:t.cn/RA5iKhq)
例如我们已经定义了一个类 People:
1 class People{
2 String name;
3 int age;
4 int height;
5
6 void say(){
7 System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);
8 }
9 }
如果现在需要定义一个类 Teacher,它也有 name、age 、height 属性和 say() 方法,另外还需要增加 school、seniority 、subject 属性和 lecturing() 方法,怎么办呢?我们要重新定义一个类吗?
完全没必要,可以先继承 People 类的成员,再增加自己的成员即可,例如:
1 class Teacher extends People{
2 String school; // 所在学校
3 String subject; // 学科
4 int seniority; // 教龄
5
6 // 覆盖 People 类中的 say() 方法
7 void say(){
8 System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄" );
9 }
10
11 void lecturing(){
12 System.out.println("我已经" + age + "岁了,依然站在讲台上讲课" ); 13 }
14 }
对程序的说明 ∙ name 和 age 变量虽然没有在 Teacher 中定义,但是已在 People 中定义,
可以直接拿来用。
Teacher 是 People 的子类,People 是Teacher 类的父类。
子类可以覆盖父类的方法。
子类可以继承父类除private 以为的所有的成员。
构造方法不能被继承。 ∙ ∙ ∙ ∙
继承是在维护和可靠性方面的一个伟大进步。如果在 People 类中进行修改,那么
Teacher 类就会自动修改,而不需要程序员做任何工作,除了对它进行编译。
单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这个限制被称做单继承性。后面将会学到接口(interface)的概念,接口允许多继承。
最后对上面的代码进行整理:
1 public class Demo {
2 public static void main(String[] args) {
3 Teacher t = new Teacher();
4 t.name = "小布" ;
5 t.age = 70;
6 t.school = "清华大学" ;
7 t.subject = "Java";
8 t.seniority = 12;
9 t.say();
10 t.lecturing();
11 }
12 }
13 class People{
14 String name;
15 int age;
16 int height;
17
18 void say(){
19 System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);
20 }
21 }
22 class Teacher extends People{
23 String school; // 所在学校
24 String subject; // 学科
25 int seniority; // 教龄
26
27 // 覆盖 People 类中的 say()
方法
28 void say(){
29 System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄" );
30 }
31
32 void lecturing(){
33 System.out.println("我已经" + age + "岁了,依然站在讲台上讲课" ); 34 }
35 }
运行结果:
我叫小布,在清华大学教Java ,有12年教龄
我已经70岁了,依然站在讲台上讲课
注意:构造方法不能被继承,掌握这一点很重要。 一个类能得到构造方法,只有两个办法:编写构造方法,或者根本没有构造方法,类有一个默认的构造方法。(更多关注尽在订阅号:javaedu )
继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。
继承可以理解为一个类从另一个类获取方法和属性的过程。如果类
B 继承于类
A ,那么B 就拥有A 的方法和属性。
继承使用 extends 关键字。(参考网站:t.cn/RA5iKhq)
例如我们已经定义了一个类 People:
1 class People{
2 String name;
3 int age;
4 int height;
5
6 void say(){
7 System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);
8 }
9 }
如果现在需要定义一个类 Teacher,它也有 name、age 、height 属性和 say() 方法,另外还需要增加 school、seniority 、subject 属性和 lecturing() 方法,怎么办呢?我们要重新定义一个类吗?
完全没必要,可以先继承 People 类的成员,再增加自己的成员即可,例如:
1 class Teacher extends People{
2 String school; // 所在学校
3 String subject; // 学科
4 int seniority; // 教龄
5
6 // 覆盖 People 类中的 say() 方法
7 void say(){
8 System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄" );
9 }
10
11 void lecturing(){
12 System.out.println("我已经" + age + "岁了,依然站在讲台上讲课" ); 13 }
14 }
对程序的说明 ∙ name 和 age 变量虽然没有在 Teacher 中定义,但是已在 People 中定义,
可以直接拿来用。
Teacher 是 People 的子类,People 是Teacher 类的父类。
子类可以覆盖父类的方法。
子类可以继承父类除private 以为的所有的成员。
构造方法不能被继承。 ∙ ∙ ∙ ∙
继承是在维护和可靠性方面的一个伟大进步。如果在 People 类中进行修改,那么
Teacher 类就会自动修改,而不需要程序员做任何工作,除了对它进行编译。
单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这个限制被称做单继承性。后面将会学到接口(interface)的概念,接口允许多继承。
最后对上面的代码进行整理:
1 public class Demo {
2 public static void main(String[] args) {
3 Teacher t = new Teacher();
4 t.name = "小布" ;
5 t.age = 70;
6 t.school = "清华大学" ;
7 t.subject = "Java";
8 t.seniority = 12;
9 t.say();
10 t.lecturing();
11 }
12 }
13 class People{
14 String name;
15 int age;
16 int height;
17
18 void say(){
19 System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);
20 }
21 }
22 class Teacher extends People{
23 String school; // 所在学校
24 String subject; // 学科
25 int seniority; // 教龄
26
27 // 覆盖 People 类中的 say()
方法
28 void say(){
29 System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄" );
30 }
31
32 void lecturing(){
33 System.out.println("我已经" + age + "岁了,依然站在讲台上讲课" ); 34 }
35 }
运行结果:
我叫小布,在清华大学教Java ,有12年教龄
我已经70岁了,依然站在讲台上讲课
注意:构造方法不能被继承,掌握这一点很重要。 一个类能得到构造方法,只有两个办法:编写构造方法,或者根本没有构造方法,类有一个默认的构造方法。(更多关注尽在订阅号:javaedu )