• Java面向对象之继承


       继承基于封装,首先要有类生成好。继承,我的观点是,类是将一些具有相同属性方法集中到一起的结果,但是有的时候某些属于这些类的东西想拥有自己的独特的方法,独特的属性,但是也想调用该大类的原有的一些方法和属性。那么就产生了继承。继承,字面意思就强调必须有至少两个类才能实现继承。

       鉴于方便起见,我将两个类写到同一个java文件中:

    public class Apple extends Fruit
    {
        public Apple()
        {
            super(1);//自身没有带参数的构造方法,所以调用了父类的带参数的构造方法,依然需要写在第一行。
            System.out.println("I am Apple!");
        }
        public void eat()
        {
            System.out.println("apple eat!");
        }
        public void give()//父类没有带一个参数的give方法,修改了父类的统一方法的参数数目或者类型成为重载(overload)
        {
            System.out.println("Apple give!");
            super.give(1);//不是构造方法的一般方法不强调super()的位置。
        }
        public void give(int i)//在父类中有相同的give方法,所带参数一样,所以这个方法叫做重写,只是修改了方法执行的语句。(override)
        {
            System.out.println("apple 1 give!");
        }
        public static void main(String[] args)
        {
            Apple apple=new Apple();
            apple.give();
            apple.eat();
        }
    }
    class Fruit
    {
        public Fruit(int i)
        {
            System.out.println("I am Fruit!");
        }
        public void eat()
        {
            System.out.println("Fruit eat!");
        }
        public void give(int i)
        {
            System.out.println("Fruit 1 give!");
        }
    }

    输出结果如下:

    I am Fruit!
    I am Apple!
    Apple give!
    Fruit 1 give!
    apple eat!

    总结:1)父类的构造方法一定包含了子类的所有构造方法,子类不一定需要拥有父类的全部构造方法,如果想调用父类中子类没有的构造方法,可以用super()来实现;

                2)只修改父类方法的执行结果,被称为重写;修改了父类方法中参数的类型和参数个数,被称为重载;

                3)构造方法中的super和普通方法中的super要求不同,构造方法中的super代表初始化过程,必须写在最开始的位置,而普通方法中的super则不要求。

  • 相关阅读:
    MySQL decimal unsigned 更新负数不报错却为0
    centos 安装jdk
    CentOS7安装docker
    Cron 时间元素
    PHPStorm
    日志习惯
    HTTP幂等性
    navicat for mysql 10.1.7注册码
    localStorage、sessionStorages 使用
    FreePascal
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/3801419.html
Copyright © 2020-2023  润新知