您当前的位置:《Java语言程序设计》听课笔记:17
《Java语言程序设计》听课笔记:17
6-2 this super
类继承并改变它的访问权限
父类不允许子类访问它的某些成员,则必须将其声明为private成员
 
对父类成员进行同名覆盖:当一个父类成员不适合该子类时,子类可以覆盖和定义它。
即在子类中声明一个与父类成员同名的新成员以屏蔽父类同名成员,在子类中或通过子类对象只能访问到子类中新定义的同名成员
要求类型 名字相同,覆盖同名方法是,方法头完全相同
 
同名覆盖式一种多态性
覆盖后,父类同名成员还存在,只是看不见(被隐藏)
在子类中通过super可改变被覆盖的父类同名成员的可见性,即在子类中通过super课显示调用父类的同名覆盖成员
//D.java
class A
{int x=2,y=3;}
class B extends A
{int y=4;
void f(){System.out.println("x="+x+"y="+y);}
}
class D
{public static void main(String args[])
{B b=new B();//b.x=2 b.B::y=4(b.A::y=3)
b.f()://x=2y=4
b.y=5;//b.B::y=5(b.A::y=3)
b.f();//x=2y=5
}}
方法同名覆盖必须是返回值 ,方法名,方法参数相同
如果是 返回值 方法名相同,而方法参数不相同,则是方法重载
e.g://D.java
class A
{int x=2;
void f(){System.out.println(x);}
}
class B extends A
{int x=3;
void g(){System.out.println(x);}
void h(){f();}
}
class D
{public static void main(String args[])
{B b=new B();
b.f();//2
b.g();//3
b.h();//2
}}
java系统默认,每个类都具有null,this,super三个域
在任何类中都可以不加说明而直接使用它
null:空引用
this:代表当前对象的引用
super:代表父类对象的引用
this不能在程序中显式修改它或给它赋值
静态方法(类方法)中不能使用this
它始终代表当前对象(正在被某个成员方法操作的对象)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收藏状态
收藏本课程的同学
相关课程