类在实现抽象方法时,必须用public修饰符,why?
4个回答
展开全部
首先抽象类定义的时候一般是public,因为抽象类通常是为了抽象出一些特性或者规范,由该类以外的类(子类,更多是子类以外的类)使用这样的特性决定它只能是public或internal,如果确定抽象类及子类不会被跨程序集使用,定义成internal也是可以的,往往开始并不知道会不会跨,而且往往会跨。先说抽象类定义为public的情况,此时抽象方法可以是public理论上也可以是protected,internal,(不能是private因为子类都访问不到怎么重写呢,这种可预见性矛盾编译器肯定是要报错),如果是protected则这个方法只能在抽象方法所在类和其子类中使用,这样这个抽象方法就没有意义了(因为开头说了我们定义这个抽象类及其子类是为了让它们以外的类使用),所以抽象类使用public类型后,抽象方法可以public也可以internal类型,会不会觉得public配internal怪怪的,因为既然两个一定是配套使用,外面pub里面也就pub好了;下面说确定不跨程序集使用时,internal类型的抽象类,和上面的思路一样,它的抽象方法一定是>=internal的范围,可以是internal或public,里面大一点不报错但没有意义,因为类只暴露给本程序集,方法就没机会被程序集外的东西调用,同样既然配套使用那就都internal吧。到此总结就只有两种有意义的定义方式了,public 抽象类
public 抽象方法;internal 抽象类 internal抽象方法,说到此,由于你在实现抽象方法的时候用不用public取决于定义的时候,如果用了一套internal定义,实现的时候当然可以不用public。
public 抽象方法;internal 抽象类 internal抽象方法,说到此,由于你在实现抽象方法的时候用不用public取决于定义的时候,如果用了一套internal定义,实现的时候当然可以不用public。
展开全部
首先, public修饰的方法作用于是最大的, 然后, 抽象类只有extends才能实现, 最后, 我觉得在不清楚抽象类使用环境的时候, 将其作用于设置为最大是很有必要的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你继承的抽象类 父类的方法声明的是public的吧.
由于子类不能窄化接口 (里氏代换原则)
父类public 子类不能变protected private
父类 protected 子类不能 private 但是能够往上提升成public
由于子类不能窄化接口 (里氏代换原则)
父类public 子类不能变protected private
父类 protected 子类不能 private 但是能够往上提升成public
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抽象方法需要子类去实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询