- Java是一门面向对象的编程语言,在Java的世界中,任何事物都可以抽象成为一个对象。比如说,车是一个大类,可以抽象为一个车类Car,奔驰、宝马、奥迪则可以看成车这个对象的一个具体实例。人也是个对象,吃饭走路,说话是我们所有人的共同特征。而每个人又拥有着各自的名字、年龄、不同的体重、身高等。
- 因此,我们在写程序时,为了降低程序之间的耦合性,提高代码的扩展性,把一个对象公共的属性或者方法 封装 到一个类中,并定义为抽象类。这样在其子类 继承 该类时,便会自动拥有父类的共有属性和方法,提高了代码的复用率、减少了重复代码的编写。被定义为抽象(Abstract)类的类叫做继承该类的父类。一个父类可以被多个类所继承,但一个类只能有一个父类,类似于人类社会中的父亲和儿子的关系。
- 多态。 除了可以用(extends)继承实现,还可以用 接口(Interface) 实现。接口本质上是一个抽象到极致的抽象类,接口里的方法只能为抽象方法。
- 多态很好的弥补了一个类只能继承一个父类(即单继承)的缺点,一个类可以实现多个接口这样使得程序的灵活性大大提高。
基于Java的三大特性,我自己写了个简单的demo,记录一下自己的理解:
- 描述:模拟生活中组装电脑的场景,现在有三个零件,分别是CPU、内存和硬盘,把它组装到电脑对象。
package com.wy.demo6;
/**
* CPU接口
*/
public interface CPU {
public String cpu();
}
package com.wy.demo6;
/**
* 硬盘接口
*/
public interface HardDisk {
public String hardDisk();
}
package com.wy.demo6;
/**
* 内存接口
*/
public interface EMS {
public String capcity();
}
package com.wy.demo6;
/**
* 我的CPU
*/
public class MyCpu implements CPU {
@Override
public String cpu() {
return "4核CPU";
}
}
package com.wy.demo6;
/**
* 我的内存
*/
public class MyEMS implements EMS {
@Override
public String capcity() {
return "16GB";
}
}
package com.wy.demo6;
/**
* 我的硬盘
*/
public class MyHardDisk implements HardDisk {
@Override
public String hardDisk() {
return "1TB";
}
}
下面把我的零件组装到我的电脑中:
package com.wy.demo6;
/**
* 我的电脑
*/
public class Computer {
private MyCpu cpu;
private MyEMS ems;
private MyHardDisk myHardDisk;
public void setCpu(MyCpu cpu) {
this.cpu = cpu;
}
public void setEms(MyEMS ems) {
this.ems = ems;
}
public void setMyHardDisk(MyHardDisk myHardDisk) {
this.myHardDisk = myHardDisk;
}
public void show(){
System.out.println("我的电脑配置:");
System.out.print("CPU:"+cpu.cpu()+"n"+"内存:"
+ems.capcity()+"n"+"硬盘容量为:"+myHardDisk.hardDisk());
}
}
在编程中某些特定的功能一般定义成一个接口,这样就可以让某些需要此功能的类来实现此接口而不必在公共的父类中添加从而影响其他类的继承。