您的位置:首页 > 其它

继承 重写 自动转型/ 多态

2017-07-23 12:10 204 查看
 

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

Public class Men { //父类定义

private string name ;

Public void setname()

{

name = “sx”;<
4000
/p>

}

}

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

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

//  Sx是men的子类之后可以调用Men中的public方法

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

{

}

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

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

{

Sx sx=new Sx();

Sx.setname(); //这里并不会显示错误,原因是Sx是Men的子类可以调用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的子类,并调用函数。

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

自动转型,子变父,调用还是子类的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: