java集合复习
public class java_test {
public static void main(String[] args) {
animal a1=new dog();
a1.shout();
//a1.guard(); 出错
}
}
abstract class animal{
String name="animal";
public void shout(){
System.out.println("动物叫。。。。。");
}
}
class dog extends animal{
String name="dog";
public void guard(){
System.out.println("狗叫。。。。。。");
}
}
animal是抽象类,dog继承了animal类,使用animal a1=new dog();
将子类强制转换为父类,那么a1就是一个animal的对象,只能使用animal中的方法。
再将dog子类强制转换为父类的情况下,如果在dog类中重写animal的shout方法,则animal的shout方法被覆盖,调用的是dog自身的方法。
如果dog类中存在同名属性,则父类属性被隐藏,dog.name
此时访问的是父类的属性。