面向对象编程
一、面向过程和面向对象的区别
面向过程(Procedure Oriented)是一种以过程为中心的编程思想,注重于只针对某一个特定问题,它关注的是将问题分解成一个个详细的步骤,并通过函数实现每一个步骤,然后依次调用这些函数来解决问题。常见的面向过程的语言有C语言。
面向对象编程(Object-Oriented Programming,简称OOP)是一种计算机编程模型,面向对象更注重于解决某一大类问题,只需在解决某些特定问题时赋予特定参数。它围绕数据或对象来组织软件设计,而不是围绕功能和逻辑。在面向对象的编程中,更强调对象与对象之间的交互,对象的属性和方法都被封装在对象内部。面向对象编程具有封装性、继承性和多态性三大特性。常见的面向对象的语言有Java,Python,PHP等。
二、类和对象
类是一种抽象的广泛的一个统称,只规定了其中成员拥有的属性和行为,并不对其具体描述,对象则是类似于继承了类的属性和行为,并且对自身的属性和行为有具体描述,是单个的具体的个体。
①. 类是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合
属性:就是该事物的状态信息。
行为:就是在你这个程序中,该状态信息要做什么操作,基于事物的状态能做什么。
例如学生是一个类,是一个统称,学生有姓名,年龄,有上学的行为,但不对具体的细节做描述。
②. 对象是一类事物的一个具体个体。即对象是类的一个实例,必然具备该类事物的属性和行为。
例如张三是一个学生,今年18岁,每天上学去学习java,张三继承了学生这个类的姓名、年龄属性和学习java的行为,并且对属性和行为有具体描述,张三即为一个对象。
世间万物皆有自己具体的属性和行为,所以世间万物皆对象。
三、如何定义类
①. 类的定义格式
关键字:class(小写)
【修饰符】 class 类名{
}
例:public class Student{
String name;
int age;
}
此时定义了一个学生类,拥有姓名和年龄两个属性。
②. 对象的创建
关键字:new
类名 对象名 = new 类名();
例:Student stu = new Student();
stu.name = "张三";
stu.age = 18;
此时定义了一个stu对象,此对象的名字为张三,年龄为18。
四、包(Package)
①. 包的作用
(1)可以避免类重名:有了包之后,类的全名称就变为:包.类名
(2)可以控制某些类型或成员的可见范围,如果某个类型或者成员的权限修饰缺省的话,那么就仅限于本包使用。
(3)分类组织管理众多的类。
例如:
-
java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread等,提供常用功能
-
java.net----包含执行与网络相关的操作的类和接口。
-
java.util----包含一些实用工具类,如集合框架类、日期时间、数组工具类Arrays,文本扫描仪Scanner,随机值产生工具Random。
②. 如何声明包
关键字:package
package 包名;
③. 如何跨包使用类
只有public的类才能被跨包使用
(1)使用类型的全名称
例如: java.util.Scanner input = new java.util.Scanner(System.in);
(2)使用import 语句之后,代码中使用简名称
例如:import 包.类名;
import 包.*;
五、成员变量
如何声明成员变量
【修饰符】 class 类名{
【修饰符】 数据类型 成员变量名;
}
使用static修饰符可以将成员变量分为两大类,静态变量和非静态变量。其中静态变量又称为类变量,非静态变量又称为实例变量或者属性。
访问实例变量时必须使用 对象.属性 或 对象.方法,并且在访问前需要先定义对象。
访问类变量时可以直接使用 类名.属性 或 类名.方法,无需定义,但必须使用static修饰。