重新认识面向对象
继承
面向对象肯定要用到继承
定义:继承是对现实生活的“分类”概念的一种模拟
目的:复用代码
而现实的作用:忽略了代码的耦合性和内聚性,造成了代码高耦合,拥有极深的类型继承树,牵一发而动全身,影响对代码的日后维护
文章图片
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 = https://www.it610.com/article/100;
}
class Child:Parent{
public int value = 200;
}
#在主函数中的测试代码
Parent p = new Child();
System.out.println(p.value);
System.out.println((p as Child).value);
第一个输出语句是父类的值
而第二个输出语句是子类的值,总结在字段同名的情况下,子类若想输出必须转换类型
【重新认识面向对象】总结:在实际开发中,要尽量避开这些坑!!!
推荐阅读
- 6. 对象存储
- ML.NET|ML.NET 更新
- spring|Spring注解配置AOP面向切面编程
- Spring源码分析|【注解】Spring AOP 面向切面编程之@Around的详细用法
- 知识的宝库|Spring的AOP(面向切面编程)概念解释
- AOP|Spring AOP面向切面编程之日志记录
- spring|Spring AOP(面向切面编程)
- JAVA测开|二、Spring AOP面向切面编程
- 【SIGIR 2022】面向长代码序列的Transformer模型优化方法,提升长代码场景性能
- 高复用服务响应对象的设计思想以及抽象封装