多态中成员函数的特点--转载

l  接口:理解为是一个特殊的抽象类,但它不是类,是一个接口

n  接口的特点:

    1,定义一个接口用interface关键字

            interface Inter{}

        2,一个类实现一个接口,实现implements关键字

            class Demo implements Inter{}

        3, 接口不能直接创建对象

           通过多态的方式,由子类来创建对象,接口多态  

n  接口中的成员特点:

        成员变量:

            只能是final 修饰的常量

            默认修饰符: public static final

        构造方法:

            无

        成员方法:

            只能是抽象方法

            默认修饰符: public abstract

n  类与类,类与接口,接口与接口之间的关系

        类与类之间:继承关系,单继承,可以是多层继承

        类与接口之间: 实现关系,单实现,也可以多实现

        接口与接口之间:继承关系,单继承,也可以是多继承           

        Java中的类可以继承一个父类的同时,实现多个接口

A. 在多态中成员函数的特点:
 在编译时期:参阅引用性变量所属的类中是否有调用的方法。如果由编译通过;
  在运行时期:参阅对象所属的类中是否有调用的方法。
  简单的总结就是:成员函数在多态调用时,编译看左边,运行看右边。

B. 在多态中,成员变量的特点:

无论编译和运行,都参考左边(引用型变量所属的类)

C. 在多态中,静态(static)函数的特点:

无论编译和运行,都参考左边。


例如下面的代码:

class Fu{
int num=5;
void method1(){
System.out.println(" Fu Method_1");
}
void method2(){
System.out.println(" Fu Method_2");
}
static void method4(){
System.out.println(" Fu Method_4");
}
}
class Zi extends Fu{
int num=8;
void method1(){
System.out.println("Zi Method_1");
}
void method3(){
System.out.println("Zi Method_3");
}
static void method4(){
System.out.println(" Zi Method_4");
}
}
public class DuoTaiDemo_1 {
public static void main(String[] args){
Fu f=new Zi();
f.method1();
f.method2();
//f.method3();
System.out.println(f.num);
Zi z=new Zi();
System.out.println(z.num);

f.method4();
z.method4();

}

}
如果由f.method3();  那么编译不会通过,因为在Fu类中没有这个方法。

num作为成员变量,无论编译和运行,都参考左边,也就是引用型变量所属的类,第一个是父类(Fu)中的num,第二个是子类(Zi)中的num。

Method4作为静态(static)函数,无论编译和运行,都参考左边。

最后程序的运行结果是:

Zi Method_1
Fu Method_2
5
8
Fu Method_4
Zi Method_4

---------------------
作者:candy_crush
来源:CSDN
原文:https://blog.csdn.net/wang424313682/article/details/45556713
版权声明:本文为博主原创文章,转载请附上博文链接!