本帖最后由 mayor125 于 2013-11-8 16:19 编辑
方法覆写的时候必须考虑到子类和父类方法中权限的问题,就是:被子类覆写的方法不能拥有比父类方法更加严格的访问权限。即子类中的同名方法权限不能比父类中的同名方法更小。
例如:- class Person
- {
- void print() //父类中默认权限的方法
- {
- System.out.println("abcdefg");
- }
- }
- class Student extends Person //定义一个Person类的子类Student
- {
- public void print() //覆写父类中的方法,拥有最大权限
- {
- System.out.println("ABCDEFG");
- }
- }
- class ExtendsDemo2
- {
- public static void main(String[] args)
- {
- Student stu = new Student();
- stu.print();
- }
- }
复制代码 输出结果是:ABCDEFG
疑问:目前我所学到的方法有public、private、默认 这3中,权限大小依次是public > 默认 > private,那么如下代码输出的是什么情况?父类中的方法被覆写了之后,输出的结果是abcdefg- class Person //定义父类Person
- {
- private void print()
- {
- System.out.println("abcdefg");
- }
- public void show()
- {
- this.print(); //调用print方法
- }
- }
- class Student extends Person //定义一个Person类的子类Student
- {
- void print() //覆写父类中的方法
- {
- System.out.println("ABCDEFG");
- }
- }
- class ExtendsDemo3
- {
- public static void main(String[] args)
- {
- Student stu = new Student();
- stu.show();
- }
- }
复制代码 |