继承:子类通过关键字extends指明其父类,从而建立类的继承关系。
要点:
1)Java要求每个类都有父类,如果定义类时没指明父类,默认为Object类。
2)java只持单超类继承。也就是一个子只能有一个父,但一个父可以有多个子。
3)子类继承父类非私有的数据成员和非私有的成员函数(体现出java的封装性)。
4)子类除了继承父类非私有的属性外,还可添加子类自己特有的属性。
1 //父类
2 class FatherDemo {
3 // 父亲的公有属性
4 public String usePen;
5
6 // 父亲的公有方法
7 public void teach() {
8 System.out.println(usePen);
9 }
10 }
11
12 // 儿子类
13 class SonDemo extends FatherDemo {
14 // 添加特有的属性
15 public String hobby;
16
17 // 添加特有方法
18 void selfStudy() {
19 System.out.println(hobby);
20 }
21 }
22
23 // 孙子类
24 class GrandsonDemo extends SonDemo {
25 // 添加特有的属性
26 public String lazy;
27
28 // 添加特有方法
29 void study() {
30 System.out.println(lazy);
31 }
32 }
33
34 public class ExtendDemo {
35
36 public static void main(String[] args) {
37 FatherDemo father = new FatherDemo();
38 SonDemo son = new SonDemo();
39 GrandsonDemo grandson = new GrandsonDemo();
40 // 父自己的方法
41 System.out.println("father:");
42 father.usePen = "I can use a pen.";
43 father.teach();
44 System.out.println();
45 // 子继承方法加自己的方法
46 System.out.println("son:");
47 son.usePen = "I can use a pen too.";
48 son.hobby = "I like football.";
49 son.teach();
50 son.selfStudy();
51 System.out.println();
52 // 孙继承方法加自己的方法
53 System.out.println("grandson:");
54 grandson.usePen = "I can't use a pen.";
55 grandson.hobby = "I don't like football.";
56 grandson.lazy = "I am very lazy.";
57 grandson.teach();
58 grandson.selfStudy();
59 grandson.study();
60 }
61
62 }
输出结果如下:
father:
I can use a pen.
son:
I can use a pen too.
I like football.
grandson:
I can't use a pen.
I don't like football.
I am very lazy.