您的位置:首页 > 编程语言 > Java开发

Java面向对象之继承

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

   鉴于方便起见,我将两个类写到同一个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则不要求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: