子类中重新定义父类属性

子类中重新定义父类属性

package com.imooc.thread;

class MyThread1 extends Thread{
private String name;
public MyThread1(String name) {
this.name = name;
}

public void run() {
for(int i = 0; i <30; i++) {
System.out.println(Thread.currentThread().getName()+"正在运行"+i);
}
}
}

public class ThreadTest5 {
public static void main(String[] args) {
MyThread1 thread1 = new MyThread1("thread1");
MyThread1 thread2 = new MyThread1("thread2");

thread1.setPriority(Thread.MAX_PRIORITY);
thread2.setPriority(Thread.MIN_PRIORITY);

thread1.start();
thread2.start();
}
}

对于上面这段代码里面的MyThread1类继承了Thread类,同时定义了一个name属性,我想问一下,有必要重新定义name属性吗?Thread类里面不是有name属性吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2021-01-29 16:12:17

同学你好,Thread类中的name属性是private修饰的,如下图所示:而private表示私有的,私有的意思就是除了本类之外,其他类中是不可以直接使用。

http://img1.sycdn.imooc.com//climg/6013c216098b187b07670423.jpg

所以无法在子类中调用name属性,所以可以在子类中定义属于子类的name属性。

注:在子类中不定义name属性也是可以的,可以调用父类中的setName()方法。具体如何书写代码,同学可根据自身习惯选择书写即可。如下图所示:

http://img1.sycdn.imooc.com//climg/6013c360092956a505310187.jpg

祝学习愉快!

  • 既然我可以通过getName()和setName()来对name属性进行操作,那么还有什么必要在子类重新定义一个name属性呢

    2021-01-30 14:46:18
  • 同学你好,课程中在子类中定义name值,为了清楚的展示name属性,所以老师在子类中定义了name属性。同学在开发时,同学可根据自身习惯进行开发。

    祝学习愉快!

    2021-01-30 15:15:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师