网站首页 > java教程 正文
- 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());
}
}
在编程中某些特定的功能一般定义成一个接口,这样就可以让某些需要此功能的类来实现此接口而不必在公共的父类中添加从而影响其他类的继承。
猜你喜欢
- 2024-11-13 Java面向对象三大特征:封装、继承、多态
- 2024-11-13 利用Java注解的简单封装,进行的一次优化
- 2024-11-13 如何封装原生的 Java NIO 以及扩展?详细到让你分分钟搞定Netty
- 2024-11-13 Java面向对象——基础2 封装、继承、多态
- 2024-11-13 想要 Spring Data JPA/MongoDB 更易用,你应该这样封装
- 2024-11-13 Java面向对象高级特性-封装(java面向对象三大特点)
- 2024-11-13 Java基础类型与封装类型的区别与联系
- 2024-11-13 java包装类的自动封装、自动拆箱和缓存
- 2024-11-13 java程序员必备的基础知识_java面向对象之封装(二)
- 2024-11-13 Java面试基础回顾03-封装(java基础面试题及答案)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)