『StuQ技术人写作输出行动计划』大本营

重新认识面向对象

2016-11-01  本文已影响40人  ivanZz

继承

面向对象肯定要用到继承
定义:继承是对现实生活的“分类”概念的一种模拟
目的:复用代码
而现实的作用:忽略了代码的耦合性和内聚性,造成了代码高耦合,拥有极深的类型继承树,牵一发而动全身,影响对代码的日后维护

3.jpg

子类和父类的关系

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);

第一个输出语句是父类的值
而第二个输出语句是子类的值,总结在字段同名的情况下,子类若想输出必须转换类型

总结:在实际开发中,要尽量避开这些坑!!!

上一篇下一篇

猜你喜欢

热点阅读