继承与多态
一个类只能继承一个父类,但是能够实现多个接口。
如果子类的成员变量和父类的相同,会屏蔽父类中的成员变量。即“成员变量隐藏”。如果子类父类窦生铭了以后,调用父类的需要使用super关键字。
class paernt{
int x = 10;
}
class child extends parent{
int x = 20;
public void print(){
System.out.println("x = "+x) ; //输出20;
System.out.println("super.x = "+super.x); //输出10
}
}
重写(覆盖),指子类方法与父类方法相同,相同的方法名、参数列表和返回值,只有方法体不同。(方法体指{。。。}中的内容)
但是覆盖后的方法不能比原方法的访问控制更加严格。
发生多态的前提条件:
继承。多态一定发生在子类和父类之间。
覆盖。子类覆盖了父类的方法。
声明的变量类型是父类类型,但实例则指向子类实例。
即Figure为父类,Triangle为子类,指多态为以下情况。
Figure f = new Triangle();
f.onDraw();
instanceof 运算符,判断一个对象是否属于某个引用类型。返回true和false
Student s1 = new Student();
int studentcount = 0;
if(s1 instanceof Student){
studentcount++;
}
抽象类与接口
抽象类:具有抽象方法的类,抽象方法即指因某种原因不能具体实现的方法。
punlic abstract class Figure{
public abstract void onDaw();
}
一个方法是抽象的,它的类必定是抽象的。但是一个抽象的类,可以包含具体方法。