• 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,我来自:火星

  • 相关阅读:
    DB2中的ROW_NUMBER() OVER()函数用法 转
    各个数据库分页语句汇总
    db2导出DDL
    db2数据库操作
    在myeclipse+tomcat中出现org.apache.juli.logging.LogFactory这样的错误,为什么?
    spring的事务管理有几种方式实现 (转自:http://blog.csdn.net/bopzhou/article/details/7094108)
    JAVA 判断一个字符串是不是一个合法的日期格式
    oracle添加字段 与 db2 添加字段
    ajax详细讲解
    Js 时间间隔计算(间隔天数)
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5970805.html
Copyright © 2020-2023  润新知