用继承,组合复用代码及default的继承范围
2016-03-06 14:04
501 查看
</pre><p></p><p>编程中多用组合少用继承</p>方式1:组合<p><span style="font-size:18px">定义:组合是整体和部分的关系,部分只能属于一个整体 has a 整体有一个部分</span></p><p><span style="font-size:18px">对象之间四大关系:</span></p><p><span style="font-size:18px">(1)关联:聚合和组合</span></p><p><span style="font-size:18px">(2)继承</span></p><p><span style="font-size:18px">(3)实现</span></p><p><span style="font-size:18px">(4)依赖</span></p><p></p><p style="font-size:18px"><span style="font-size:18px">组合:类A组合类B的对象</span></p><p style="font-size:18px"></p><p style="font-size:18px">class A{</p><p style="font-size:18px"><span style="white-space:pre"></span>private B b=new B();</p><p style="font-size:18px">}</p><p style="font-size:18px"></p><p><span style="font-size:18px">代码举例:</span></p>比如有个类叫Dao它有两个属性一个是选择刀的大小一个是砍方法<span style="font-size:18px"></span><pre name="code" class="java">public class Dao { public int daoSize=1; public void kan(){ System.out.println("往右砍"); System.out.println("往做砍"); } }
还有一个类叫战士它有一把刀他能战斗可以改变刀的大小
<span style="font-size:18px;">public class ZhanShi { private Dao dao=new Dao(); public void Zhandou(){ dao.daoSize=3; dao.kan(); } }</span>
如果把刀定义成局部变量叫依赖不叫组合了
方式2:继承
准确的翻译成扩展
示例代码
写一个Person类,里面有两个方法每个人都吃饭,睡觉
public class Person { public void eat(){ System.out.println("我在吃饭"); } public void sleep(){ System.out.println("睡觉"); } }再写一个Student类,因为Student也是人他也吃饭睡觉所以我们继承Person方法
public class Student extends Person{ public void study(){ System.out.println("我在学习"); } public static void main(String[] args) { Student s = new Student(); s.eat();//虽然Student没有定义 eat方法 但是相当于定义了 } }
Person 父类 基类
Student 子类 派生类 衍生类
注意:protected和public可以被继承。
private 是不可以继承的的
default比较特殊,default只能在本包内继承,不能跨包继承,default不能被继承这个观点错误的
代码举例:
相关文章推荐
- 用Python做图像处理
- CodeForces 598D-Igor In the Museum【DFS】
- mongdb drivar for java 3.0版本之mongo-java-driver-3.0.0.jar 使用
- 20145222黄亚奇《Java程序设计》第1周学习总结
- 转载:C# 之泛型详解
- Ubuntu14.04下,GO语言的安装!
- Ubuntu14.04下,GO语言的安装!
- C语言格式化说明符
- java一点小的知识点
- 防止网页被嵌入框架的代码
- c++ split()实现
- 20145213《Java程序设计》第一周学习总结
- wordpress非插件实现后台保护代码
- 最长公共子串 Longest-Common-Substring(LCS)
- spring的aop 基于schema
- spring的aop 基于schema
- LeetCode : Letter Combinations of a Phone Number [java]
- java第五天
- [转载] Java ArrayList、LinkedList、Vector比较
- eclipse启动虚拟机报PANIC: Could not parse file: .;C:\Users\Andme\.android\avd\4.1.ini解决方案