封装:
封装是指隐藏对象的属性和实现细节,禁对外公开接口.封装能为软件带来以下优点:
(1)便于使用者正确、方便地理解和使用系统,防止使用者错误地修改系统的属性。以供电系统为例,现在的房屋里电线都是以暗线来装修的,在墙壁上只留下一些电源插口。为了简单,而且暴露在外的电线不安全也不美观。这就是封装的优点。
(2)有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化时,只要他的借口不发生变化,就不会影响到其他的系统。
(3)提高代码的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是一个可重用的系统,在相机,手电筒,玩具赛车中都可以得到重用。
(4)大大的降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机坏了,他的干电池依然可用,可以安装到手电筒上。
有四种访问控制级别:
public:对外公开,访问级别最高。
protected:只对一个包中的类或者子类公开。
默认:只对同一个包中的类公开。
private:不对外公开,只能在对象内部访问,访问级别最低。
继承:
电视(Tv)和电脑(Computer)都具有type、color、price的属性和power()的行为,因此可以抽象出一个电器类(Wiring),Tv和Computer就是Wiring的两个子类。
在父类和子类之间存在着继承和扩展关系。子类继承了父类的属性和方法,同时,子类中海可以扩展出新的属性和方法,并且还可以覆盖父类中方法的实现方式(也就是在子类中重新实现父类中的方法)。例如手机,早期的手机只具有打电话的功能,而现在的手机多了拍照,发送信息等等的功能,现在的手机具备越来越多的功能,生产手机的厂商他们不必从头生产,而是在原有手机的基础上进行升级。继承与扩展同时提高了系统的可重用性和可扩
展性。
多态:
多态是指当系统A访问系统B的服务是,系统B可以通过多种实现方式来提供服务,而这一切对系统A是透明的。例如某电动剃须刀Shaver既可以用干电池,也可以用交流电。干电池Battery和交流电源ACPower都具有供电的功能,不妨抽象出父类--电源类Power。
电动剃须刀是一个包含电源子系统的组合系统。电源类Power是一个抽象类,他有一个抽象方法providePower(),他是电源子系统对外提供的接口
封装是指隐藏对象的属性和实现细节,禁对外公开接口.封装能为软件带来以下优点:
(1)便于使用者正确、方便地理解和使用系统,防止使用者错误地修改系统的属性。以供电系统为例,现在的房屋里电线都是以暗线来装修的,在墙壁上只留下一些电源插口。为了简单,而且暴露在外的电线不安全也不美观。这就是封装的优点。
(2)有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化时,只要他的借口不发生变化,就不会影响到其他的系统。
(3)提高代码的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是一个可重用的系统,在相机,手电筒,玩具赛车中都可以得到重用。
(4)大大的降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机坏了,他的干电池依然可用,可以安装到手电筒上。
有四种访问控制级别:
public:对外公开,访问级别最高。
protected:只对一个包中的类或者子类公开。
默认:只对同一个包中的类公开。
private:不对外公开,只能在对象内部访问,访问级别最低。
下面是对一个计算器转换数学进制的类:如果用户选择二进制,计算器就会把当前的数字转换为二进制;如果选择十六进制,计算器就会把当前数字转换为十六进制:
public class TransferNum {
/**代表当前数据*/
private int data;
/**代表计算器当前数学进制*/
private int scale;
/**对计算器当前的数据进行数学转换,不对外公开*/
private void transfer(int oldSacle,int scale){
}
/**设置数学进制,对外公开的接口*/
public void setScale(int scale){
int oldScale=this.scale;
this.scale=scale;
transfer(oldScale,scale);
}
}
继承:
电视(Tv)和电脑(Computer)都具有type、color、price的属性和power()的行为,因此可以抽象出一个电器类(Wiring),Tv和Computer就是Wiring的两个子类。
/**电器类*/
public class Wiring {
private String type ;
private String color;
private int price;
public Wiring() {
super();
// TODO Auto-generated constructor stub
}
public Wiring(String type, String color, int price) {
super();
this.type = type;
this.color = color;
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public void power(){
}
}
/**电视*/
public class Tv extends Wiring{
private String size;
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public Tv() {
super();
// TODO Auto-generated constructor stub
}
public Tv(String type, String color, int price) {
super(type, color, price);
// TODO Auto-generated constructor stub
}
public void showInfo(){
System.out.println(this.getSize()+" "+super.getType()+" "+super.getColor()+" "+super.getPrice());
}
}
/**电脑*/
public class Computer extends Wiring {
private String cpu;
public Computer() {
super();
// TODO Auto-generated constructor stub
}
public Computer(String type, String color, int price) {
super(type, color, price);
// TODO Auto-generated constructor stub
}
}
子类继承父类关键字extends,子类调用父类的方法用super。在上面的电视和电脑中继承了电器的所有属性和行为,但又分别具有size、cpu的属性和getInfo()的行为。
在父类和子类之间存在着继承和扩展关系。子类继承了父类的属性和方法,同时,子类中海可以扩展出新的属性和方法,并且还可以覆盖父类中方法的实现方式(也就是在子类中重新实现父类中的方法)。例如手机,早期的手机只具有打电话的功能,而现在的手机多了拍照,发送信息等等的功能,现在的手机具备越来越多的功能,生产手机的厂商他们不必从头生产,而是在原有手机的基础上进行升级。继承与扩展同时提高了系统的可重用性和可扩
展性。
多态:
多态是指当系统A访问系统B的服务是,系统B可以通过多种实现方式来提供服务,而这一切对系统A是透明的。例如某电动剃须刀Shaver既可以用干电池,也可以用交流电。干电池Battery和交流电源ACPower都具有供电的功能,不妨抽象出父类--电源类Power。
电动剃须刀是一个包含电源子系统的组合系统。电源类Power是一个抽象类,他有一个抽象方法providePower(),他是电源子系统对外提供的接口
下面是Shaveer类
public class Shaver {
private Power power;
public Shaver(Power power) {
this.power = power;
}
public Shaver() {
}
public void shave(){
power.providePower();
}
}
在电动剃须刀的Shave()方法中,调用电源的providePower()方法。
power.providePower();
此处的电源既有可能是Buttery对象,也有可能是ACPower对象。下面是电动剃须刀使用交流电源工作
Shaver shaver=new Shaver();
shaver.setPower(new AcPower());
shaver.shave;
下面是电动剃须刀使用干电池工作
Shaver shaver=new Shaver();
shaver.setPower(new Battery());
shaver.shave;