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则不要求。

原文地址:https://www.cnblogs.com/MedivhQ/p/3801419.html