编程语言的发展阶段:
机器语言(汇编语言):由0和1组成的序列,称为机器指令。
过程语言(C):把代码的组成叫过程和函数的块。
面向对象编程(C#,Java):封装,继承,多态。
面向对象(OOP):Object Oriented Programming,描述对象之间的相互作用。
面向对象和面向过程的区别:
算法与数据结构:
过程:先确定算法,再确定数据结构。
对象:先确定数据,再确定算法。
数据操作:
过程:建立数据结构存放数据并定义函数(方法)对数据进行操作。
对象:构造一个数据模型,把数据和方法组织在一起。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
面向对象的三大特征:(抽象)
封装:隐藏属性,方法或实现细节的过程。
含义:java中,对象就是一个封装体。
把对象的属性和服务组合成一个独立的单位,并尽可能地隐蔽对象的内部细节,主要指私有数据。
目的:使得对象以外的部分不能随意存取对象的内部数据(属性),从而使得软件错误能够局部化,大大减少查错或排错的难度。
好处:使用方便,保护内部数据,维护方便。
方法:封装语句,类封装属性。
概念:广义:所有的东西都可以封装。
狭义:1.属性私有(private)2.访问之中提供getter/setter,3.访问器中添加条件。
static{}静态代码块(一个类只执行一次),{}非静态代码块(对象创建便会执行)
private 私有访问修饰符(内部可用)。
public 公共访问修饰符(谁都可使用)。
特性:设置对象中的成员变量和方法的访问权限(public,private,protected,缺省)
提供一个统一让其他类引用的访问接口。如一些public方法;
其他对象不能直接修改本对象所拥有的私有属性和私有方法
包:类空间的划分单位。
静态代码只输出一次,而属性走一次,输出一次。
作用:1.对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
2.对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的
构造方法:(构造类的对象,没有构造方法时,java jvm自动提供无参构造方法)
作用:给属性赋值:
类型 变量=new 构造方法();
定义: ps:方法名和类名相同,没有返回值类型。
使用:类型 变量=new 构造方法();
方法重载:
例子:System.out.println();
定义: 方法名相同,参数列表不一致(参数个数,对应的位置类型不一致)。
问题: 方法名相同容易记住,与参数类型有关,与参数名无关。
this用法总结:
本类中方法调用自己的属性和方法时可以使用this。
局部变量和属性重名时必须添加this。
构造方法的使用:
this():
1.必须放在构造方法的第一句。
2.必须调用自己的别的构造方法。
方法分类:
实例方法:每一个对象独享(调用自己的任何方法(除了自己的构造方法外)):this.方法名();
类方法:类中所有对象共享(非静态方法和构造方法不能调用)
构造方法:可以调用自己的所有方法包括别的构造方法。
封装和构造方法的重载的问题:
问题:使用构造方法可以直接给属性赋值,set访问器中的判断无效。
解决办法:构造方法给属性赋值时,建议使用set方法赋值
属性赋值方法总结:
1.类中属性直接赋值
2.使用构造方法给属性赋值
3.通过set方法属性赋值
4.通过实例方法给属性赋值
5.在类外创建对象,调用2-4给对象属性赋值。