导航:首页 > 方法技巧 > 重写方法中的属性值如何导出

重写方法中的属性值如何导出

发布时间:2022-07-26 20:03:16

① java中如何取到一个对象的所有属性值,并且在创建一个相同的对象

利用Java的反射机制,或者是简单点的,重写被复制类的clone()方法,即可。看图:

② C#中如何重写ToString()方法输出类中的变量

C#中,重写使用override修饰符。

要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用override修饰符。

示例:

publicclassEmployee
{
publicstringname;

publicoverridestringToString()
{
//重写需要的输出。
returnyoucode;
}
}

override方法提供从基类继承的成员的新实现。由override声明重写的方法称为重写基方法。重写的基方法必须与override方法具有相同的签名。

不能重写非虚方法或静态方法。重写的基方法必须是virtual、abstract或override的。

override声明不能更改virtual方法的可访问性。override方法和virtual方法必须具有相同的访问级别修饰符。

您不能使用new、static或virtual修饰符来修改override方法。

重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是virtual、abstract或override的。


参考MSDN

③ java中重写方法中调用父类的属性

哥们你看好了,我和你一样也是初学者,你的问题,也是前几天我的问题;

这玩意我在Java群里面也问过,搞了十年Java的也说不出个123来还动用了什么debug测试工具,当然这个玩意以后我们也会用到!

我告诉你步骤怎么回事:


  1. 当你newY的时候,注意,还没有产生对象的时候,就执行了一个动作就是加载CLASS文件这个动作!


  2. class文件已加载,就开始动用分配内存的动作,懂??

3.此时分配的对象有,方法区,父类方法,和子类方法:(这里说的覆盖其实只是就近原则而已,其实没有覆盖如果你不理解,你可以看看Java内存分析)

4.还分配了成员变量,在堆里面分配,注意:(堆内存,分配了子类和父类变量其实都有的,是划分开的切记:两个类里面的i都给划分了空间)

5.此时堆内存的所有变量,都是默认值,int就是0;这个步骤称为:隐式初始化!以上是加载class后就发生的动作懂了?


6.然后子类继承了父类,父类动作必然先执行父类里面的构造函数,开始执行初始化动作

(注意:构造函数是用来初始化动作的,能给本类对象初始化,也能给子类对象初始化切记!)


7.父类,启用构造函数先把自己的i=2给赋值完毕(显示初始化动作);

就开始执行构造函数里面的其他语句;这里就是你写的那个方法display();

父类读这个方法的时候,回去方法区里面找方法,他优先找子类,如果子类没有,在找他自己的,此刻子类是有的,也称之为覆盖

(说明一下,其实父类方法也在的)

8.此刻调用的子类方法,子类里面调用了i,(此时父类的i已经是2了,但是子类i还是0,懂了?但是方法找变量的时候会优先找子类懂了?当然k也是0了)

9.父类读完你这个调用以后就会把子类所有的成员变量初始化完成,称之为(显示初始化动作,就是我们能看的见的数字)

10.如果你在new完成以后,你在调用,你会发现,都是有值的了!


11.补充下:哥们纯手工靠记忆敲打出来的;

这个是我个人纠结了好几天以后总结的,总结的不到位还请指点,有大佬指引我,遇见这问题可以先记起来,以后学到多线程,很容易就可以理解!

祝你Java越来越厉害,顺便也期望我也一样吧,呵呵!!

④ java类的抽象类 子类重写方法输出结果

1.抽象类
public abstract class IBotany {

private int bloodVolume=100;

private String botanyName="默认植物";

public abstract void attack();

public int getBloodVolume() {
return bloodVolume;
}

public void setBloodVolume(int bloodVolume) {
this.bloodVolume = bloodVolume;
}

public String getBotanyName() {
return botanyName;
}

public void setBotanyName(String botanyName) {
this.botanyName = botanyName;
}

}
2.豆荚类
public class PeaPods extends IBotany{

public PeaPods(){
super();
}

public PeaPods(int bloodVolume,String botanyName){
setBloodVolume(bloodVolume);
setBotanyName(botanyName);
}

public void attack() {
System.out.println(getBotanyName()+"植物可以远程攻击!剩余血量:"+getBloodVolume());
}

}
3.薯仔类
public class Potato extends IBotany{
public Potato(){
super();
}

public Potato(int bloodVolume,String botanyName){
setBloodVolume(bloodVolume);
setBotanyName(botanyName);
}

public void attack() {
System.out.println(getBotanyName()+"植物可以近身肉搏!剩余血量:"+getBloodVolume());

}
}
4.测试类
public static void main(String[] args) {
PeaPods peaPods = new PeaPods(50, "豌豆荚");
Potato potato = new Potato(500, "薯仔");
peaPods.attack();
potato.attack();

}

输入结果:
豌豆荚植物可以远程攻击!剩余血量:50
薯仔植物可以近身肉搏!剩余血量:500

⑤ 为何java中,在子类调用父类继承来的方法时,输出的是父类的属性值。

两个属性都是私有的,子类不能继承父类私有属性或方法,但父类自己却可以使用自己的私有属性和方法,所以此处如果不重写父类方法,则在调用show()方法时默认使用的是父类方法,调用的是父类属性,所以输出A中的i、j。但当子类覆盖了,也即重写了父类方法时,默认调用子类方法,所以输出的是子类属性,如果你不相信,你可以在重写父类方法之后使用super调用重写的方法,输出的肯定是父类属性,因为super是强制使用父类属性和方法的意思,其实如果你能深入研究的话,你会发现super其实就是一个父类对象,在之心子类构造函数时jvm默认为我们创建好的。
这个地方你可以将两个属性换成公有的,但是有这么一句话你去体会——当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量

⑥ Java 继承 重写方法 传值

初始化顺序的问题,b bb = new b(4);这句在执行的时候首先会调用父类的构造方法,然后就是调用test()方法,而子类是覆盖了父类的test()方法的,所以是调用子类的test()方法,而在调用父类的构造方法是,子类k值还未确定,虚拟机会首先会把k初始化为零,所以开始输出的是KKKKKKKk=0,然后调用子类的构造方法,而此时k值已经赋值为15,所以输出的是KKKKKKKk=15
,我想大概就是这样的

⑦ java中的方法重写

理论上说方法重写只要参数列表和名称相同就可以认为已经是重写~~不过方法重写一般都和原来的方法一摸一样~~也就是方法名、参数列表、返回值都和原方法一样~~要实现方法重写的话必须得继承相应的父类~~并且在子类里有一个和父类的某一个方法相同的一个方法~~如果是在本类里存在的相同的方法是重载而不是重写~~

阅读全文

与重写方法中的属性值如何导出相关的资料

热点内容
戒酒什么方法最快 浏览:336
拉力测试仪使用方法 浏览:245
电子放大镜使用方法 浏览:971
冰梯的制作方法和步骤 浏览:684
榻榻米和床连接方法 浏览:192
杂土渣土的鉴别方法图解 浏览:698
冰用哪些方法溶化 浏览:633
中国移动宽带电视网线连接方法 浏览:816
简单有效的去扁平疣方法 浏览:526
鸟简便方法怎么画 浏览:831
选择高层管理者最常用甄选方法 浏览:220
机械硬盘放在光驱位置安装方法 浏览:805
外部存储的计算方法 浏览:741
金刚石液压块安装方法 浏览:113
资金货物比例计算方法 浏览:270
快速削水果皮的方法 浏览:827
路灯电压过低闪烁解决方法 浏览:500
挂车改短方法图片 浏览:443
嘴上起皮用什么方法能治好 浏览:440
矿泉水桶锻炼方法图解 浏览:172