如若文章中出现冲突,或者出现错误,请联系 QQ:2669157689 指出我的问题。谢谢~
介绍面向对象编程的基本思想,通过本课的学习,我们应该掌握如下知识:
- 理解什么是类、对象、构造器,
- 对象在内存中的表现形式及如何使用对象等。
- this和static关键字
JAVA编程基础 —— 面向对象基础
1. 面向对象编程思想
- 面向过程编程
传统的C语言属于面向过程编程。面向过程解决问题的思路:通常是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,最后一个一个依次调用函数来解决。
案例:ATM提款机终端系统(面向过程编程)
步骤1:输入密码,系统判断是否正确,如正确,进入取款界面,如错误,提示重新输入。
步骤2:进入取款界面,输入取款金额,系统判断余额是否足够,如不足,提示;如足够,点钞。
步骤3:吐出钞票,打印票据。
面向过程编程考虑的问题是程序运行的流程,主要是程序的算
法,而数据只是在必要的时候插入到算法中间。 - 面向对象编程(OOP:Object-Oriented Programming)
从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。面向对象解决问题的思路:通常是把构成问题域的事务分解成各个对象,给对象赋予相应的属性和行为,通过多个对象的相互协调来解决问题。建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为 。支持面向对象编程是Java 语言的重要特点。
案例:ATM提款机终端系统(面向对象编程)
根据要解决的问题,可以抽象出如下对象:
① 客户
② 银行卡
③ 现金
④ 票据
这些对象没有先后顺序,共同作用才构成了整个系统。我们只要用代码设计出这几个类型的对象,然后让他们互相通信、传递消息就可以完成系统功能。 - 面向对象编程思想实际上就是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。
- 面向过程与面向对象的差别
面向过程:
① 系统以过程/函数为中心来组织
② 过程间相互发送数据
③ 过程的执行动作与数据被明显的分离
④ 关注的焦点在于数据结构、算法和执行步骤
⑤ 过程通常难以被复用。
面向对象:
① 系统以对象为中心来组织
② 对象相互间发送消息
③ 相关的属性和行为被统一到对象上
④ 关注的焦点是对象及对象的职责
⑤ 使得系统构建更容易,易维护,易扩展,易复用
⑥ 解决问题的方式更接近人的思维方式,使人更容易理解
从面向过程到面向对象,不仅仅是编程方式的改变,更重要的是思考方式的改变。 - 面向对象基本概念
抽象(abstract):
① 从事物中舍弃个别的非本质特征,抽取共同的本质特征
② 只考虑与问题域相关的信息,而忽略与问题域不相关的部分
对象(object):
① 可以是有形的,也可以是无形的(如一个客户,一张银行卡,窗体中的一个按钮等等)
② 对象是构成世界的一个独立单位
③ 具有自己的静态结构(属性)和动态行为(方法)
④ 每个对象有自己的唯一标识
类(class):
类是一组具有相同属性和行为的对象的抽象,类的作用是用来创建对象,对象是类的一个实例
类和对象的关系:
① 抽象和具体的关系
② 每一个类在某一时刻都有零个或更多的实例, 类是生成对象的模板
③ 一个类定义了使用哪些数据来描述属性,每一个对象都有相应的属性值数据,一个类通过一系列方法来定义行为,这些方法能在每个对象中被激活 - 面向对象主要特征
封装(encapsulation):
① 所谓封装是把对象的属性和行为结合在一个独立的系统单位内部
② 尽可能隐蔽对象的内部细节,只向外部提供接口
③ 降低对象间的耦合度
④ 封装的重要意义:使对象能够集中而完整地描述并对应一个具体事物;体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据
继承(inheritance):
① 也称泛化,继承性是子类自动共享父类属性和方法的机制,在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入自己若干新的内容
② 继承简化了人们对事物的认识和描述,有益于软件复用,是OO技术提高软件开发效率的重要原因之一
③ 是类之间的一种关系,一般类与特殊类之间的关系
④ 继承关系的语义:" is a kind of "
多态(polymorphism):
① 指同一个命名可具有不同的语义
② OO方法中,常指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,对于子类,可用不同的方法替代实现父类的服务的方法
2. 类的定义
- 什么是类
类的定义:
① 把相似的对象划归成一个类
② 在软件设计中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的属性(变量)和行为(方法)
举例(西游记游戏软件中的游戏人物,数据是虚构的):
① 孙悟空:孙悟空的武器是金箍棒,战斗力五颗星,耐力五颗星
② 唐僧:唐僧没有武器,战斗力为零,耐力五颗星
③ 猪八戒:猪八戒的武器是耙子,战斗力五颗星,耐力两颗星
④ 沙僧:沙僧的武器是月牙铲,战斗力三颗星,耐力四颗星 - 类的格式
① 修饰符一般为 public ,也可以没有修饰符
② 注意类名的命名规范,类名一般首字母大写
③ 类的成员:成员变量(属性),成员方法(方法),嵌套类
④ 通过 " . " 调用属性和方法
⑤ 类的定义举例(具体实例):
public class Student {
private String name;
private char sex;
private double score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "Student [name=" + name + ", sex=" + sex + ", score=" + score + "]";
}
public void showInfo() {
System.out.println("学生的名字是:" + name + ",性别是:" + sex + ",成绩是:" + score);
}
public Student(String name, char sex, double score) {
super();
this.name = name;
this.sex = sex;
this.score = score;
}
public Student() {
super();
}
}
- 类成员的定义
① 成员变量:[修饰符] 类型 属性名=[默认值];
其中修饰符有:public、private、protected,也可以省略不写
② 方法:
[修饰符] 返回值类型 方法名(形参列表)
{
语句
} - 方法的定义
① 方法:方法是完成某个功能的一组语句,通常将常用的功能写成一个方法
示例:Function_sample1.java
② 方法的格式:
[访问控制符] [修饰符] 返回值类型 方法名(参数类型 形式参数,参数类型 形式参数,…)
{
方法体
}
③ 方法的格式
形式参数:在方法被调用时用于接收外部传入的变量
参数类型:就是该形式参数的数据类型
返回值:方法在执行完毕后返回给调用它的程序的数据
返回值类型:方法要返回的结果的数据类型
④ 方法的分类
根据有参个数:有参方法、无参方法
根据返回值类型
1.有返回值的方法:基本数据类型、引用数据类型
2.无返回值的方法:void - 方法的调用
① 方法的调用
方法只有在被调用后才生效,调用方法:
1.无参方法的调用: 方法名( );
2.有参方法的调用举例:
public int add(int x, int y) {
int z = x + y;
return z;
}
public static void main(String[] args) {
int x = fd.add(10, 20);
System.out.println(x);
int y = fd.add(100, 200);
System.out.println(y);
}
- 方法的重载
方法的重载就是在同一个类中允许同时存在一个以上同名的方法
方法重载的规则:
① 方法名称相同
② 方法的参数必须不同:参数个数不同或者参数类型不同
③ 方法的返回值类型可以相同,也可以不同
④ 举例:
public int getSum(int end) {
int sum = 0;
for (int i = 1; i <= end; i++) {
sum += i;
}
return sum;
}
public int getSum(int start, int end) {
int sum = 0;
for (int i = start; i < end; i++) {
sum += i;
}
return sum;
}
- 方法应该注意的问题
① 形参必须注明数据类型
② 实参直接写,不需要类型声明
③ return只能返回一次
④ 遇到return语句,方法结束执行,后续语句不执行
⑤ 方法的返回值,必须与方法声明中的返回值类型匹配
⑥ 方法定义,不能写在main()中
⑦ 方法是不能嵌套的
太长了,分两篇来发表吧。。
来源:https://blog.csdn.net/xiaogang_17042112/article/details/102501422