会员书架
首页 > 游戏竞技 > java语言入门经典书籍 > 第6部分

第6部分(第2/6 页)

目录
最新游戏竞技小说: 末世:囤女神,系统百倍返现全球灾变:开局建设神级战车初之心盛霆烨长夜尽头周铮穿越成太子的小说傅啾啾穿越小说领先人类一千年原神之旅行者在漫威让你练短跑,你破了世界纪录?在古代逆流而上的日子精灵之我是农场主穿书后我成了小拖油瓶顾总太太把你拉黑了乔若星顾景琰从学霸开始迈向星辰大海大唐贵婿模板奥尼尔,美女都是我的充电宝王者:是个英雄就超标,别太离谱世界杯:我把C罗喂吐了末日:我真不是土匪无止的界限

du2=newUniversityWorld(”清华大学”;”北?copy;”;”

中国”);System。out。println(”u1=”+u1。name+”;”+u1。city+”;”+

u1。country);System。out。println(”u2=”+u2。name+”;”+u2。city+”;

”+u2。country);System。out。println(”city=”+city+”;country=”+

country);System。out。println(”u1。samecity(u2)=”+u1。samecity(u2));

System。out。println(”u1。samecity(city;country)=”+u1。samecity(city;

country));}}

下面是输出结果。

C:》javaUniversityWorldCityu1=北?copy;大学;北?copy;;中国u2=清华大学;北?copy;;中国city=上海;country=中国u1。samecity(u2)=trueu1。samecity(city;country)=false

5。13动态成员函数发送

当你用点操作符调用一个对象实例的成员函数时,对象实例所属的类在编译时要被检查,以确保调用的成员函数在该类中是存在的。在运行时,对象实例可以指向所声明类型的子类的实例。在这?copy;情况下,如果子类覆盖了要调用的成员函数,Java就用实例来决定调用哪一个成员函数。如下面的例子,两个类是子类和超类的关系,子类覆盖了超类的成员函数。

classA{voidcallme(){System。out。println(”在A的callme成员函数里”);}}

classBextendsA{voidcallme(){System。out。println(”在B的callme成员函数里”);}}

classDispatch{publicstaticvoidmain(Stringargs''){Aa=newB();a。callme();}}

有趣的是,在成员函数main里,我们把变量a声明为类型A,然后把类B的一个实例存放到它上面。我们在a上调用成员函数callme,Java编译器确定在类A确实有成员函数callme,但是在运行时,由于a事实上是B的实例,所以调用B的callme,而不调用A的。下面是运行结果:C:》javaDispatch在B的callme成员函数里

5。14final

在缺省情况下,所有的成员函数和实例变量都可以被覆盖。如果你希望你的变量或成员函数不再被子类覆盖,可以把它们声明为final。这意味着将来的实例都依赖这个定义。例如:finalintFILE_NEW=1;finalintFILE_OPEN=2;finalintFILE_SAVE=3;fianlintFILE_SAVEAS=4;finalintFILE_QUIT=5;final变量用大写标识符是一个一般的约定。

5。15静态

如果你想要创建一个可以在实例的外部调用的成员函数,那么你只需声明它为静态的(static?copy;,它就会正常运行。静态成员函数只能直接调用其他静态成员函数,而不能以任何方式使用this或super。你也可以把变量声明为静态的。如果你想初始化一个静态变量,你可以用static声明一个恰好在类调用时执行一次的程序块。下面的例子是一个带有一个静态成员函数,几个静态变

量,和一个静态初始块的类。

classStatic{staticinta=3;staticintb;staticvoidmethod(intx){System。out。println(”x=”+x);System。out。println(”a=”+a);System。out。println(”b=”+b);}static{System。out。println(”静态初始块”);b=a*4;}pub

本章未完,点击下一页继续。

目录
修真大掌门宫记·晏然传夜雨秋灯录综主fate之混沌魔法婚姻的智慧毁生界
返回顶部