方法的修饰符有两类:
1.访问控制修饰符(public,private,protected,默认)
2.方法本身修饰符(static,final,abstract,)
类的修饰符:
1.前缀修饰符(public,abstract,final) //j一个java的源文件中,规定最多只能有一个public 类,当然也可以一个都没有。如果有public公共类,则规定文件名只能public 公共类的类名称一致,若是没有,则文件名可以任意。作为一个java程序的入口(javaSE)的类必须为public类。
2.后缀修饰符(extends,implements)
—————————————————————————————————————————————————————————————————————————————
private | default | protected | public | |
同一个类中 | √ | √ | √ | √ |
同一个包中 | √ | √ | √ | |
子类 | √ | √ | ||
全局范围 | √ |
访问权限: 高——————————————————————————————————>低
question1:子类重写父类的方法的访问修饰符,不能低于父类的方法访问权限
class Fu { private void xx() { syso.... } } class Zi extends Fu { public void xx() //这样完全找不到私有方法,所以说子类修饰符访问权限要(大于等于)父类修饰符访问权限 { syso.... } }
question 2:子类可以覆写父类方法吗??(就是子类可以先继承父类方法,在覆写吗?)
answer 2:可以的,但是一定要避免以下情况
Class Fu { public void xx(){} } Class Zi extends Fu { public int xx () {} }
Class Demo
{
public static void main(String arg [])
{
Zi zi=new Zi();
zi.xx()//这时候就不知道到底调用那个xx()
}
}
————————————————————————————————————————————————————————————————————————————之前理解的子类重写父类方法权限要大于等于父类方法的例子举的不好。
因为父类方法有private的时候。子类完全不知道,如果写了一个和父类名字一样的,不叫重写
https://blog.csdn.net/wn1017888485/article/details/46051981(子类为什么不能重写private父类方法)
现在重新举个例子。
class Fu
{
public void xx(){}
}
class Zi
{
void xx(){}
}
另一个包中的c类
class C
{
class A a=new class();
a.xx(),这样class zi就访问不到,只能访问父类xx()。重写失败。
}