导航:首页 > 编程语言 > java覆盖属性

java覆盖属性

发布时间:2022-04-26 14:51:28

‘壹’ 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 父类A有属性B b,子类A1有属性B1 b,B1是B的子类。那么A1的b属性覆盖了父类的属性吗

不会覆盖的

A1中的b变量是局部变量,好比这是两个家庭,恰好有一个孩子名字相同,但本质上是两个不同的变量。
所以对A1中的b操作不会对父类A中的b属性有任何影响

‘叁’ java中的覆盖是什么意思,谁能写个简单的代码 举例解释下

你可以理解为父类是一个模板,子类拿过来之后在上面修改。
举个通俗的例子,盗墓笔记里张起灵家族手指都长,都长生不老。然后呢:

父亲姓张,那么他的前五个孩子都姓张,但是呢,第六个孩子跟妈妈姓王了,但是他们都继承了父类手指长,长生不老的特性。老六就是覆盖了父类中的张姓。
为啥写父类还要覆盖?
写父类是因为很多子类都有一些通用的属性,覆盖是因为每一个子类还有些不同之处。
比如鸟类:通用的属性是羽毛,会飞,两只腿,下蛋。
但是鸵鸟这个类比较特殊,它继承了鸟类但是不会飞,所以就覆盖父类的方法,把飞行这项重新写一下。
不知道你明白了没。我是这么理解的。如果有不对的地方还请见谅。

‘肆’ Java中属性的隐藏与方法的覆盖的区别

成员变量是没法继承的,而方法可以继承。
首先a对象是animal类的对象,所以两个变量的输出的是animal类的成员变量。其中a.a,调用的静态方法所以a.a和animal.a是一样的。而且animal.a更为标准。
再看方法。由于method类是静态方法,所以a.method就是animal.method;而voice方法在cat类中被覆写,所以调用cat类中的方法,如果要访问父类animal的voice方法应该用super关键字调用。

‘伍’ 在java中有没有属性覆盖这一说法

好像没有,但是有作用域啊!!!比如:
class Test{
int num = 0;

public void display(){
int num = 9;

System.out.println(num);

}
}

你调用display()的结果就是打印“9”。。。

‘陆’ Java继承中属性的覆盖的疑问

((Stemb)stb).x覆盖掉了父类Rootb 的x值,但是结果正确阿,看你的代码:
Rootb stb = new Stemb(47); \\声明一个Rootb对象,对象的x值为1
System.out.println (stb.x);
System.out.println (((Stemb)stb).x); \\这里首先进行转化,由于stb开始是Rootb对象,而Stemb继承了Rootb对象,所以这里没有问题,stb转换为Stemb类对象的时候,x值跟着变成了Stemb对象的x值,没有问题吧??

对于你的第二个问题:这要看具体情况,生成Rootb类的对象,对应x值就为1
生成Stemb对象,对应x值就为2

‘柒’ JAVA构造器属性覆盖

public A()
{
int foo = 0;
}
这里,如果加了int那么foo就是局部变量,去除int则就是全局变量。newA().foo取的是全局变量

‘捌’ java中可以用哪个关键词来查看父类被隐藏或覆盖的属性

属性的隐藏是指实例变量和方法内部变量相同时,实例变量在该方法内会被隐藏,比如你在方法内直接输出变量,前面不加this,那么只会输出方法内那个变量的值。
方法的覆盖是指子类继承父类时,对父类的方法进行重写,要求返回类型,参数都要与父类一致,当然返回类型可以返回原来返回类型的子类。
一个是对变量而言一个是对方法而言,对于变量,你在方法内可以是任何的类型,和实例变量的类型没有关系。

小弟不才,学java一段时间了,从来没有看到过属性的隐藏会出现在继承中。在继承时,子类中出现与父类相同的属性时,那个属性和父类中的属性没有关系,如果父类中的属性可以被子类继承,子类自然继承了那个属性,出现属性名字相同时,那只是只类的一个自己的属性而已。在子类中用super当然能区别是那个属性,这没有什么奇怪的,继承的一个特点而已。
除了静态变量外,你要访问属性得要有实例对象,你在一个类中同时初始化父类对象和子类对象,他们互不影响,除非你用多态的方式调用,就算用多态调用,使用的属性也只会是父类的属性!调用的方法则是子类重写的方法!

‘玖’ java继承中关于属性的覆盖问题,继承中是否存在属性的覆盖

属性是不会覆盖的哦。。。

父类的属性是父类的。。。子类的属性是子类的。。。

方法是可以被覆盖的。。。

希望能帮到你。。。。

‘拾’ java当子类覆盖了父类的方法或属性,子类是否继承了父类的该方法或属性

当然会继承啊,如果想要调用的话用super就可以了
public
class
Father{
String
name
=
"Father";
public
void
print(){
System.out.println(this.name);
}
}
public
class
Child
extends
Father{
String
name
=
"Child";
public
void
print(){
System.out.println(this.name);
}
}
public
class
Main{
public
static
void
main(String[]
args){
Parent
p
=
new
Parent();
p.print();
//输出Father
p
=
new
Child();
p.print();
//输出Child
}
}

阅读全文

与java覆盖属性相关的资料

热点内容
python列表求交集 浏览:872
解压包如何转音频 浏览:447
机明自动编程软件源码 浏览:325
php端口号设置 浏览:540
phperegreplace 浏览:320
androidgridview翻页 浏览:537
ssh协议编程 浏览:634
如何开我的世界电脑服务器地址 浏览:861
玄关pdf 浏览:609
程序员学习论坛 浏览:940
程序员的毒鸡汤怎么做 浏览:548
安卓怎么降级软件到手机 浏览:281
云与服务器入门书籍推荐产品 浏览:636
delphi编程助手 浏览:762
电脑遇到服务器问题怎么办 浏览:515
加工中心编程结束方法 浏览:296
了解什么是web服务器 浏览:140
面向对象的编程的基本特征 浏览:718
php定时执行任务linux 浏览:787
php数组中删除元素 浏览:725