楚雄java培训学校告诉你Java重载和重写?

楚雄java培训学校告诉你Java重载和重写?,第1张

(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。

重载Overloading是一个类中多态性的一种表现。

(2)java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,这就是多态性。

(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

下面是重载的例子:

packagec04.answer//这是包名

//这是这个程序的第一种编程方法,在main方法中先创建一个Dog类实例,然后在Dog类的构造方法中利用this关键字调用不同的bark方法。

不同的重载方法bark是根据其参数类型的不同而区分的。

//注意:除构造器以外,编译器禁止在其他任何地方中调用构造器。

packagec04.answer

publicclassDog{

Dog()

{

this.bark()

}

voidbark()//bark()方法是重载方法

{

System.out.println(\"nobarking!\")

this.bark(\"female\",3.4)

}

voidbark(Stringm,doublel)//注意:重载的方法的返回值都是一样的,

{

System.out.println(\"abarkingdog!\")

this.bark(5,\"China\")

}

voidbark(inta,Stringn)//不能以返回值区分重载方法,而只能以“参数类型”和“类名”来区分

{

System.out.println(\"ahowlingdog\")

}

publicstaticvoidmain(String[]args)

{

Dogdog=newDog()

//dog.bark()[Page]

//dog.bark(\"male\",\"yellow\")

//dog.bark(5,\"China\")

然后我们再来谈谈重写(Overriding)

(1)父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。

但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

方法重写又称方法覆盖。

(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。

如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

(3)子类函数的访问修饰权限不能少于父类的;

下面是重写的例子:

概念:即调用对象方法的机制。

动态绑定的内幕:

1、编译器检查对象声明的类型和方法名,从而获取所有候选方法。试着把上例Base类的test注释掉,这时再编译就无法通过。

2、重载决策:编译器检查方法调用的参数类型,从上述候选方法选出唯一的那一个(其间会有隐含类型转化)。

如果编译器找到多于一个或者没找到,此时编译器就会报错。试着把上例Base类的test(byteb)注释掉,这时运行结果是11。

3、若方法类型为priavtestaticfinal,java采用静态编译,编译器会准确知道该调用哪个方法。

4、当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用对象的实际类型相匹配的方法版本。

在例子中,楚雄java课程http://www.kmbdqn.cn/发现b所指向的实际类型是TestOverriding,所以b.test(0)调用子类的test。

但是,子类并没有重写test(byteb),所以b.test((byte)0)调用的是父类的test(byteb)。

如果把父类的(byteb)注释掉,则通过第二步隐含类型转化为int,最终调用的是子类的test(inti)。

'''

适配器模式:将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

应用场景:希望复用一些现存的类,但是接口又与复用环境要求不一致。

分类:类适配器(通过多重继承)、对象适配器。

'''

class Dog(object):

    def __init__(self):

        self.name = "Dog"

    def bark(self):

        return "汪!"

class Cat(object):

    def __init__(self):

        self.name = "Cat"

    def meow(self):

        return "喵!"

class Human(object):

    def __init__(self):

        self.name = "Human"

    def speak(self):

        return "'你好'"

class Car(object):

    def __init__(self):

        self.name = "Car"

    def make_noise(self, octane_level):

        return "引擎声{0}".format("!" * octane_level)

class Adapter(object):

    def __init__(self, obj, **adapted_methods):

        """我们对象字典里设置适配的方法"""

        self.obj = obj

        '''update()方法添加键 - 值对到字典'''

        self.__dict__.update(adapted_methods)

    """我们可以通过重载__getattr__和__setattr__来拦截对成员的访问或者作出一些自己希望的行为

     __getattr__ 在访问对象访问类中不存在的成员时会自动调用"""

    def __getattr__(self, attr):

        return getattr(self.obj, attr ,'没有找到此属性')

    def original_dict(self):

        """输出对象的实例属性"""

        return self.obj.__dict__

def main():

    """定义一个空对象列表"""

    objects = []

    dog = Dog()

    print(dog.__dict__)

    '''追加Adapter实例对象到列表'''

    objects.append(Adapter(dog, make_noise=dog.bark))

    '''Adapter实例属性, 实例也有一个 __dict__特殊属性,它是实例属性构成的一个字典:'''

    '''__dict__ 返回的是一个字典,它的键(key)是属性名,键值(value)是相应的属性对象的数据值'''

    '''实例仅拥有数据属性,它是与某个类的实例相关联的数据值,这些值独立于其他实例或类。当一个实例被释放后,它的属性同时也被清除了。'''

    print(objects[0].__dict__)

    print(objects[0].original_dict())

    print(objects[0].QQ)

    print(objects[0].make_noise())

    print("-----------------------------------------------")

    cat = Cat()

    objects.append(Adapter(cat, make_noise=cat.meow))

    print(objects[1].__dict__)

    print("-----------------------------------------------")

    human = Human()

    objects.append(Adapter(human, make_noise=human.speak))

    print(objects[2].__dict__)

    print("-----------------------------------------------")

    car = Car()

    objects.append(Adapter(car, make_noise=lambda: car.make_noise(5)))

    print(objects[3].__dict__)

    print("-----------------------------------------------")

    for obj in objects:

        print("一个 {0} 正在 {1}".format(obj.name, obj.make_noise()))

if __name__ == "__main__":

        main()

KILL 自杀

GM指令

Quit [关闭服务器]

Serverstatus 【玩家清单】

Rcon kick STEAM64位ID 理由 [踢人代码]

teleport 要传送的名字 要传送到的名字 [传送代码]

GM物品代码

g 物品名字或者ID 数量 [添加物品代码]

2 : Machines/Storage Locker 储物柜

3 : Machines/Workbench 工作平台

4 : Items/Raw Steak 生肉

5 : Items/Cooked Steak 熟肉

6 : Items/Rancid Steak 腐肉

7 : Items/Bolt Action Rifle 步枪(五弹夹)

12 : Items/Ruby 红宝石

17 : Items/Flint 打火石

18 : Items/Iron Ore 铁矿石

19 : Items/Stone 石块

20 : Items/Coal 煤

21 : Items/Wood Log 原木

22 : Items/Wood Plank 厚木板

23 : Items/Animal Fat 动物油脂

25 : Items/Owrong 果实

26 : Items/Owrong Seeds 果实种子

27 : Items/Tree Bark 树皮

28 : Items/Clay 粘土

30 : Items/Iron Pickaxe 铁镐(采掘效率高于石镐)

31 : Machines/Fire Pit 烧烤架 (燃料为煤、原木)

34 : Items/Animal Tendon 动物肉筋 (线绳原料)

35 : Items/Weak String 弱线绳

36 : Items/Shaped Iron 形铁

42 : Items/Limestone 石灰岩(混凝土原料)

44 : Items/Concrete 混凝土

45 : Items/Strong String 强线绳

47 : Items/Wood Bow 木弓

48 : AmmoType/Arrow 箭

49 : Items/Hunting Bow 猎弓

50 : Items/Mouldy Owrong 发霉的果实(汽油原料)

51 : Items/Ash 灰烬

52 : AmmoType/Bullet 步枪子弹

53 : Machines/Blast Furnace 鼓风炼炉

68 : Items/Chemsuit Jacket 生化套装夹克

69 : Items/Chemsuit Pants 生化套装裤

70 : Items/Rubber Boots 胶鞋

71 : Items/Gas Mask 防毒面具

72 : Items/Rubber Gloves 橡胶手套

78 : Items/Iron Axe 钢制斧

79 : Items/Gold Axe 金斧

80 : Items/Titranium Pickaxe 钛金镐

81 : Items/Ultranium Pickaxe 采铀镐

82 : Snare Bow 诱捕弓

85 : Items/Leather 皮

87 : Items/Amber 琥珀

88 : Items/Backpack 背包

89 : Items/Flint Hatchet 原始斧

90 : Debug Backpack GM背包(+3000格,加三种BUFF)

91 : Items/Construction Hammer 工程锤

92 : Car Hunting Bow 车猎弓

93 : Items/Ownership Stake 图腾(定义区域建筑和装置所有权)

94 : Warm Jeans 保暖裤

95 : Dirty Doubleshirt 灰色外套

96 : Basic Boots 普通靴子

98 : Items/Assault Rifle Auto M4A1自动步枪

102 : Beanie 无檐小便帽

103 : EmoHair Emo发型

104 : Grey Sneakers 灰色运动鞋

105 : Dirtyer Doubleshirt 深色外套

107 : Brown TShirt 棕T恤

109 : Gray TShirt 灰T恤

110 : Green TShirt 绿T恤

111 : White TShirt 白T恤

112 : Poo TShirt 狗屎黄T恤

116 : Beanie2 无檐小便帽2

117 : Beanie3 无檐小便帽3

119 : Brown Sneakers 棕色运动鞋

122 : Repair Bow 修复的弓

123 : Items/Roach Builder 生成器

125 : Items/Shotgun 霰弹枪

127 : Machines/Drill 钻采矿机

128 : Items/Basic Spear 石矛

129 : Items/Gray Winter Jacket 灰色冬外套

130 : Items/Red Winter Jacket 红色冬外套

131 : Items/Titranium Ore 钛金矿

132 : Items/Mondinium Ore 蒙迪矿

133 : Items/Ultranium Ore 铀矿

134 : Items/Shaped Mondinium 蒙迪金条

135 : Items/Shaped Mondinium 蒙迪金条

136 : Items/Shaped Ultranium 铀金条

137 : Items/Mondinium Pickaxe 蒙迪矿镐

138 : Mining Bow 采矿弓箭

139 : Items/Stone Pickaxe 石镐

140 : Basic Pants 裤子

141 : Shitty TShirt 烂T恤

142 : Items/Beacon 方向指针

143 : Items/Goat Builder

144 : Items/C4 炸药

146 : Items/Bow of Punishment 惩罚之弓

147 : Items/Gasoline 汽油

148 : Items/Earth Magnet 磁石

149 : Machines/Fridge 冰箱

150 : Items/Frozen Raw Steak 冻生肉

151 : Items/Frozen Cooked Steak 冻熟肉

152 : Items/Crude Coolant 原油冷凝剂

153 : Items/Pitcher Seeds

154 : Machines/Campfire 营火堆

155 : Items/Dynamite 炸药

166 : Sand Hopper Wheel 沙地轮胎

167 : Billycart Wheel Billycart轮胎

169 : Medium Suspension 悬挂

171 : Bakuhatsu Weak Engine 弱引擎

172 : Bakuhatsu Standard Engine 基本引擎

173 : Bakuhatsu Powerfull Engine 强力引擎

174 : Bakuhatsu Gearbox 离合器齿轮箱

175 : Bakuhatsu Road Gearbox 器离合器齿轮箱

176 : Damaged Bakuhatsu Engine 坏引擎

184 : Quadbike Nipple Wheel 全地形轮胎

191 : AmmoType/ShotgunShell 霰弹枪子弹

213 : Items/Sunscreen 防晒油

214 : Aussie Hat 澳大利亚人帽子

215 : Items/Succulent Seeds 种子

216 : Flannel Shirt 法兰绒衬衫

217 : Singlet 汗衫

218 : Singlet 汗衫

219 : Skater Hat 冰球帽

220 : Sombrero 汗衫

225 : Items/Assault Rifle Semi 半自动步枪

226 : Items/Ice Spear 冰矛

227 : Items/Molten Spear 炽热矛

228 : Items/Sharp Spear 尖矛

229 : Items/Arctic Pelt 雪人兽皮

230 : Items/Sasquach Pelt 野人兽皮

231 : Items/Detonator Cap 导火索

269 : Items/Yeti Horn 野人角

270 : Items/Feather A 羽毛A

271 : Items/Feather B 羽


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/504655.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-17
下一篇2023-06-17

发表评论

登录后才能评论

评论列表(0条)

    保存