继承 重写 自动转型/ 多态

 

----------------继承-----------------------

Public class Men { //父类定义

private string name ;

Public void setname()

{

name = sx;

}

}

//Sx(书訢)属于人的子类对吧,所以Sxmen继承,属于men的子类

//继承是用关键词extends 表示SxMen的子类

//  Sxmen的子类之后可以调用Men中的public方法

Public class Sx extends Men //子类的定义

{

}

//如果此时在主函数中实例化Sx的对象,如以下代码

public static viod main(String [] args)//子类的实例化与调用父类的函数

{

Sx sx=new Sx();

Sx.setname(); //这里并不会显示错误,原因是SxMen的子类可以调用Men中的方法

}


----------------------------重写overwrite---------------------------

因为子类的特征不同,就像书訢和别人有不同对啊,所以有他自己的特点

如:

Public class Sx extends Men

{

Public void setname()

{

name=sxsx; //这里进行了子类的重写

}

}

//如此之前父类中的名字是sx,现在重写变成sxsx,就是这个原理

//重写只改变方法的内容(即函数的内容)但是函数的类型,参数类型,数量不可改变。

//注意重载与重写



----------------------自动转型upcast -------------------

//哈哈所谓的代码中小范围的阶级跃迁

之前定义了子类Sx父类Men

而在后面的代码中实例化时候是这样的

Sx sx=new Sx();

其实这样也是可以的

Men sx=new Sx();

原因是什么呢?其实代码可以这样写

Sx sx; //这相当于我们定义一个变量int a;同理

sx=new Sx(); //Sx是一个类,new Sx实例化一个对象,并将它赋值(可能这个说法不太准确)给sx

 

那么同理,用父类中进行定义一个sx,并用子类的进行实例化赋值,当然也是可以的啊。

一个子类的对象你当然可以说它也是一个父类的对象咯,就像你说一个高中生 ,它当然也是一个学生咯。(是不是言简意赅,深刻发省2333

 

需要注意的一点是,刚刚讲了自动转型,和类似我们定义变量的一样

当实例化一个对象之后,调用的是什么函数呢?

答案很简单,因为之前讲了new Sx,进行赋值,那么实际上还是用了子类的功能,所以调用的当然就是子类的啦

 

接下来总结一下

A a =new A; 调用方法 a.f() 这个实际上就是实例化对象和调用函数

A a=new B; 调用方法 a.f()但是前提就是B必须是A的子类,并调用函数。

重写只是函数内容改变,其他都不改变,要区分重写与重载

自动转型,子变父,调用还是子类的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值