Java面向对象-Java类的继承及super关键字

Java面向对象-Java类的继承

 

1,继承定义以及基本使用

定义:子类能够继承父类的属性和方法;

注意点:Java中只支持单继承;

     私有方法不能继承;

 

上代码:

 1 package com.java1234.chap03.sec09;
 2  
 3 /**
 4  * 动物类
 5  * @author user
 6  *
 7  */
 8 public class Animal {
 9  
10     private String name; // 姓名
11     private int age;  // 年龄
12      
13     public String getName() {
14         return name;
15     }
16     public void setName(String name) {
17         this.name = name;
18     }
19     public int getAge() {
20         return age;
21     }
22     public void setAge(int age) {
23         this.age = age;
24     }
25      
26     public void say(){
27         System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);
28     }
29 }

我们定义一个Animal类 定义两个私有属性 name和age 然后给出共有的set get接口  以及一个共有的say()方法;

 

 1 package com.java1234.chap03.sec09;
 2  
 3 /**
 4  * 定义Dog类,继承自Animal类
 5  * @author user
 6  *
 7  */
 8 public class Dog extends Animal{
 9  
10     public static void main(String[] args) {
11         Dog dog=new Dog();
12         dog.setName("Pick");
13         dog.setAge(1);
14         dog.say();
15     }
16 }

我们再定义一个Dog类 通过extends关键字 继承Animal类;

我们实际上把父类Animal的共有方法get set以及say()方法都继承了;

运行输出:

我是一个动物,我叫:Pick,我的年龄是:1

 

2,方法重写

所谓方法的重写 我们可以在子类中根据实际业务把父类的方法重写;

上代码:

 1 package com.java1234.chap03.sec09;
 2  
 3 /**
 4  * 定义一个Cat类,继承自Animal
 5  * @author user
 6  *
 7  */
 8 public class Cat extends Animal{
 9  
10     /**
11      * 重写父类的say方法
12      */
13     public void say(){
14         System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge());
15     }
16      
17     public static void main(String[] args) {
18         Cat cat=new Cat();
19         cat.setName("Mini");
20         cat.setAge(2);
21         cat.say();
22     }
23 }

这里 我们重写父类的say方法  改成 是猫  以及用getName和getAge,因为当前对象里继承不到父类的私有字段;

 

运行输出:

我是一个猫,我叫:Mini,我的年龄是:2

 

3,对象实例过程以及super关键字

对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法;

super关键字主要是调用父类方法或者属性;

我们修改下上面的实例:

 1 package com.java1234.chap03.sec09;
 2  
 3 /**
 4  * 动物类
 5  * @author user
 6  *
 7  */
 8 public class Animal {
 9  
10     private String name; // 姓名
11     private int age;  // 年龄
12      
13      
14     /**
15      * 无参父类构造方法
16      */
17     public Animal() {
18         System.out.println("无参父类构造方法");
19     }
20      
21     /**
22      * 有参父类构造方法
23      * @param name 姓名
24      * @param age 年龄
25      */
26     public Animal(String name,int age) {
27         System.out.println("有参父类构造方法");
28         this.name=name;
29         this.age=age;
30     }
31      
32     public String getName() {
33         return name;
34     }
35     public void setName(String name) {
36         this.name = name;
37     }
38     public int getAge() {
39         return age;
40     }
41     public void setAge(int age) {
42         this.age = age;
43     }
44      
45     public void say(){
46         System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);
47     }
48 }
 1 package com.java1234.chap03.sec09;
 2  
 3 /**
 4  * 定义一个Cat类,继承自Animal
 5  * @author user
 6  *
 7  */
 8 public class Cat extends Animal{
 9  
10     private String address;
11      
12  
13     public String getAddress() {
14         return address;
15     }
16  
17     public void setAddress(String address) {
18         this.address = address;
19     }
20  
21     public Cat() {
22         super();
23         System.out.println("子类无参构造方法");
24     }
25  
26     public Cat(String name, int age,String address) {
27         super(name, age);
28         this.address=address;
29         System.out.println("子类有参构造方法");
30     }
31  
32     /**
33      * 重写父类的say方法
34      */
35     public void say(){
36         super.say(); // 调用父类的say()方法
37         System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge()+",我来自:"+this.getAddress());
38     }
39      
40     public static void main(String[] args) {
41         Cat cat=new Cat("Mini",2,"火星");
42         /*cat.setName("Mini");
43         cat.setAge(2);*/
44         cat.say();
45     }
46 }

 

运行输出:

有参父类构造方法

子类有参构造方法

我是一个动物,我叫:Mini,我的年龄是:2

我是一个猫,我叫:Mini,我的年龄是:2,我来自:火星

 

posted on 2016-10-17 18:34  eaglezb  阅读(303)  评论(0编辑  收藏  举报

导航