继承
面向对象肯定要用到继承
定义:继承是对现实生活的“分类”概念的一种模拟
目的:复用代码
而现实的作用:忽略了代码的耦合性和内聚性,造成了代码高耦合,拥有极深的类型继承树,牵一发而动全身,影响对代码的日后维护
子类和父类的关系
Animal an=null;//父类
Lion li=New Lion();//子类
an=lion;//正确
lion=an;//编译时错误
lion=(Lion)an;//正确
Monkey m=(Monkey)an;//运行时错误
父类和子类的方法,字段同名的时候,那么问题来了..
方法同名: 重载与重写
重载 | 重写 |
---|---|
不用继承 | 必须继承 |
方法名相同,参数列表不同 | 方法名,参数数目相同,参数类型兼容 |
修饰符无关 | 方法修饰符大于等于父类的方法 |
字段同名
class Parent{
public int value = 100;
}
class Child:Parent{
public int value = 200;
}
#在主函数中的测试代码
Parent p = new Child();
System.out.println(p.value);
System.out.println((p as Child).value);
第一个输出语句是父类的值
而第二个输出语句是子类的值,总结在字段同名的情况下,子类若想输出必须转换类型
总结:在实际开发中,要尽量避开这些坑!!!