zoukankan      html  css  js  c++  java
  • Java面向对象-Java类的继承 与方法重写

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

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

    注意点:Java中只支持单继承; 私有方法不能继承;

    package com.xuyigang1234.chp02.extend;
    
    /**
     * 定义一个Animal类
     * */
    public class Animal {
        private String name;
        private int age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void sys() {
            System.out.println("我是一个动物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁。");        
        }
    
    }
    package com.xuyigang1234.chp02.extend;
    /**
     * 定义Dog类,继承自Animal类
     * 
     * 继承的关键字为 extends
     * */
    
    public class Dog extends Animal {
        
        public static void main(String[] args) {
            Dog dog=new Dog();
            dog.setName("小白");
            dog.setAge(1);
            dog.sys();
            
            
        }
    }

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

    输出:

    我是一个动物,我的名字是:小白,我的只有1岁。

    2、方法重写

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

    package com.xuyigang1234.chp02.extend;
    /**
     * 定义Dog类,继承自Animal类
     * 
     * 继承的关键字为 extends
     * */
    
    public class Dog extends Animal {
        /**
         *  方法重写
         * */
        public void sys() {
            System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁。");        
        }
        public static void main(String[] args) {
            Dog dog=new Dog();
            dog.setName("小白");
            dog.setAge(1);
            dog.sys();
            
            
        }
    }

    输出:

    我是一只小狗,我的名字是:小白,我的只有1岁。
    3,对象实例过程以及super关键字

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

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

     

    package com.xuyigang1234.chp02.extend;
    
    /**
     * 定义一个Animal类
     * */
    public class Animal {
        private String name;
        private int age;
        
        public Animal() {
            System.out.println("无参父类构造方法");
        }
        
        public Animal(String name, int age) {
            System.out.println("有参父类构造方法");
            this.name=name;
            this.age=age;
        }
        
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void sys() {
            System.out.println("我是一个动物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁。");        
        }
    
    }

     

     

    package com.xuyigang1234.chp02.extend;
    /**
     * 定义Dog类,继承自Animal类
     * 
     * 继承的关键字为 extends
     * */
    
    public class Dog extends Animal {
        private String maofa;
        
        public String getMaofa() {
            return maofa;
        }
    
        public void setMaofa(String maofa) {
            this.maofa = maofa;
        }
    
        public Dog() {
            System.out.println("无参子类构造方法");
        }
        
        public Dog(String name,int age,String maofa) {        
            super(name,age); //调用父类的构造方法
            this.maofa=maofa;
            System.out.println("有参子类构造方法");
        }
        /**
         *  方法重写
         * */
        public void sys() {
            System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁,有"+this.getMaofa()+"的毛发。");        
        }
        public static void main(String[] args) {
            Dog dog=new Dog("小白",1,"白色");
    //        dog.setName("小白");
    //        dog.setAge(1);
            dog.sys();
            
            
        }
    }

    输出:

    有参父类构造方法
    有参子类构造方法
    我是一只小狗,我的名字是:小白,我的只有1岁,有白色的毛发。

  • 相关阅读:
    Windows下载Vim
    分享:分享几个程序员使用的网站
    分享:C语言大礼包(PDF)
    将vscode打造成强大的C/C++ IDE
    最适合做C/C++开发的IDE
    bzoj 2244
    bzoj 1492
    bzoj 3262
    bzoj 1176
    bzoj 2961
  • 原文地址:https://www.cnblogs.com/xyg-zyx/p/9825409.html
Copyright © 2011-2022 走看看