多语言展示
当前在线:1683今日阅读:58今日分享:42

Java核心[7]:详谈类的多态性及其实例

在面向对象程序设计,类的多态性,是指发送消息给某个对象,让该对象自行决定响应何种行为,通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。类的多态性包括成员覆写以及重载两个概念。下面,我们就类的多态性的使用介绍给大家!
工具/原料
1

Eclipse

2

JDK

多态性之成员覆写
1

成员覆写,也即在子类继承父类时,在父类和子类,出现了结构、类型和名称完全相同的属性或者是变量。这时,我们就可以说子类覆写了父类的方法或变量。

2

现在在我们先介绍一下关于成员方法(method)的覆写的。方法覆写中常用的结构格式如下:class A{      //定义一个类A,也即父类   方法B;   }class B extends A{      //定义一个类B,也即子类   方法B;}如上图,其中子类B中的方法B覆写了父类A中的方法B(提示:类A和类B的方法B中的内容不同)

3

下面,我们通过代码例子,来让大家看看成员覆写的实现。例子中,我们定义一个父类Person类,定义一个成员方法void say()方法,并定义一个Man类并继承Person类,并也定义了一个成员方法say()。在代码中,我们使用Person p=new Man();此名的含义是父类定义了一个对象变量,而此变量是由子类Man实例化的。如果使用Man m=new Man();定义的话,此时m.say()依然输出的是Man类中的方法。由图示所示,此时,我们成功覆写了父类中的方法。

4

如果我们需要使用父类的方法怎么办呢。这时我们可以使用super关键字。super可以对类进行实例化,以及调用父类的方法。如下图所示,我们在Man类中的say方法使用super.say();在运行代码时,我们可以看到结果即“Hi大家好,我是一个人类”。表明,super.say()调用了父类的方法。

多态性之方法重载
1

方法重载是在同一个类中,出现的方法的名称参数,但方法的返回类型,或参数个数不同,参数的类型不同。程序会根据这些不同选择不同的方法来执行,在前面我们已介绍过构造方法的重载。这里我们来看一下普通方法的重载。

2

在图中,我们定义一个Man类,它有name(姓名)和Hobby(爱好)两个成员变量,和三个设置变量的方法和一个用于输出信息的say()方法。其中实现重载的三个方法是public void setValue();//无参数public void setValue(String name);//只有一个参数public void setValue(String name,String hobby);//有两个参数。我们通过在声明三个对象m1,m2,m3;并使用以下三个方法来实现重载方法的调用并输出相应的信息: m1.setValue();  m1.say(); m2.setValue('小明'); m2.say(); m3.setValue('小红','Java'); m3.say();从图中的结果来看,程序根据参数个数的不同进行了方法的选择,即实现了重载

3

上图只是展示了参数个数不同的重载,对于参数类型不同等等,可以自行尝试编写。

注意事项
1

方法重载是在同一个类中,而成员覆写是在父类和子类出现的!

2

如果你觉得不错,点个赞吧!

推荐信息