JAVA 基础入门 - 面向对象概念
目标
本文目标期望能够对面向对象的一些名词进行解释,并与真实世界连接起来,记得刚刚入门面向对象编程的时候,这些名词都很简单,意思也好理解,但是在java中,他具有的特性,代表的含义,往往就被自己的思维局限住,现在通过参阅官方文档来梳理一下各个常见基本名词的定义
什么是对象
对象是对真实世界里事物在软件程序中的建模,往往由“状态”和“行为”组成“,比如真实世界的汽车状态(已启动, 已熄火,当前速度,加速中,减速中 等),汽车行为(启动,熄火,踩油门,踩刹车等),台灯状态(开,关),台灯行为(打开,关掉)
事物的状态和行为在Java中对应对象的属性和方法,在其他编程语言可能分别对应变量和方法(如JS)
使用对象有很多好处
1、模块化,一个对象的代码可以独立于其他对象进行编码和维护,并且编写一次就可以在系统中流转使用
2、信息绑定和隐藏,JAVA中的对象会隐藏内部状态,暴露外部方法供程序间使用来修改内部状态,这也是一个面向对象编码基本原则,就比如一个炒菜的老板穿着出行都和普通人没有两样,但是当你和他交谈的时候他说他有十栋楼,每天收租很累。。。这样我们就知道了,老板很累是他的状态,老板说话就是暴露他状态的方法,对的,就是这样的
3、代码重用,使用对象编写的代码往往指责单一,功能明确,便于阅读和维护
4、可以插拔,因为将状态和方法包装成一个对象,当对象出现问题时只需要修复或替换这个对象就可以
什么是类
现实世界里汽车有很多,每一辆汽车是一个对象,而每一类汽车构成类的概念
类会圈定一些状态和行为作为对象的蓝本
对象参考蓝本产生一个带具体状态和行为实例对象
public class Car{
private int speed;
public void speedUp(int newSpeed){
speed = newSpeed;
}
}
什么是继承
汽车有很多,汽车也衍生出了许多子类别的汽车, 如 商用车,跑车,越野车
秉承青出于蓝而胜于蓝的规则,子类的属性和方法往往比父类的更多更全,这就是继承。JAVA中使用extends来实现
class Taxi extends Car{
//
private int taximeter;
private String city;
}
什么是接口
正如面向对象基本原则提到,对象应当隐藏自己的属性, 通过对外提供方法的方式来修改内部状态,接口提供了一个对外的方法集合(往往代表一个完整的特性),并不包含具体的状态特性,类可以通过implements 实现该接口使得该类具有这个特性,这样类产生的对象也就具有了该特性
interface ICanFly{
void takeoff();//起飞
void landing();//降落
}
/**
说不定未来的车真的可以飞
**/
class FutureCar extends Car implements ICanFly{
@Override
void takeoff(){
//TODO
}
@Override
void landing(){
//TODO
}
}
//可以的话, 你自己也可以飞
什么是包
包可以理解为电脑上的文件夹,用于组织一些由关系的资源(图片,样式…),类,接口,脚本等
总结
持续更新中,刚刚开始
参考 Object-Oriented Programming Concepts