请教老师 有关于 protected 构造函数的问题,为什么找不到父类的无参构造函数

请教老师 有关于 protected 构造函数的问题,为什么找不到父类的无参构造函数

正在回答

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

4回答

不同包下,子类可通过关键词super访问父类中的protected修饰的方法和属性。

同学可以试一下。

如图所示,Test继承了MessageService类,并且MessageService类的构造方法是用protected修饰的http://img1.sycdn.imooc.com//climg/5c71ff4b000138b904090190.jpg

http://img1.sycdn.imooc.com//climg/5c71fee80001df0204230150.jpg

如果我的回答解决了你的问题,请采纳,祝学习愉快.

irista23 2019-02-24 10:20:02

同学,您好。经过确认跨包中子类可以访问父类的protected修饰的成员方法的。这里编译错误是不能通过直接new父类形式访问,如果在子类中使用父类构造方法应该是使用super()

提问者 我还会怀念过去 2019-02-22 17:11:12

//注意,两个类在不同包中

package com.imooc.business;

public class Student {

    protected Student() {
        
    }

    public Student(String name) {

    }
}

package com.imooc.test;

import com.imooc.business.Student;

public class TestMain extends Student {

    public static void main(String[] args) {

        Student stu = new Student();

        Student stu2 = new Student("");
    }
    
    public void testMethod() {
        Student stu = new Student();

        Student stu2 = new Student("");        
    }
}

http://img1.sycdn.imooc.com//climg/5c6fbc950001c33412400460.jpg

  • 你好同学,问题就出在这两个类不在同一个包下,用protected 修饰符修饰构造方法后,在不同包下的类是访问不到的,必须在同一个包下才可以访问到哦,祝学习愉快~
    2019-02-22 19:07:28
  • 提问者 我还会怀念过去 回复 chrismorgen #2
    不同包中的子类都访问不到吗?
    2019-02-22 19:15:51
  • chrismorgen 回复 提问者 我还会怀念过去 #3
    是的同学,这是protected 修饰符的作用,同学记住就可以了哦,祝学习愉快~
    2019-02-22 19:25:08
chrismorgen 2019-02-22 16:49:13

你好同学,我测试了一下是没有问题,建议你将光标移动到代码的飘红处,看以下报错提示是什么。另外将你的代码粘贴一下,而不是截图哦,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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