</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方法 但是相当于定义了
}
}
Student 子类 派生类 衍生类
注意:protected和public可以被继承。
private 是不可以继承的的
default比较特殊,default只能在本包内继承,不能跨包继承,default不能被继承这个观点错误的
代码举例: