面向对象概念
在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。
相对于面向过程而言。是一种思想,强调的是功能的对象。
面向对象的本质:以类的方式组织代码,以对象的方式组织数据。如请人修车,我只面向修车的人,不面对修车的过程。只看中修好车的结果。
面向对象的三大特征
封装性
是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想
继承性
主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展
多态性
指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为
类与对象
定义
对象:是具体的事物,我们叫做object,instance实例,以后我们说某个类的对象,某个类的实例,是一样的意思
类:是对象的抽象,我们叫做class,它用于描述一组对象的共同特征和行为,是对现实生活中事物的描述。
例子:交通工具(Vehicle)---->汽车(Car)、火车(Train)、飞机(Plane)、轮船(Ship)
类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作属性,成员方法用于描述对象的行为,可简称为方法
关系
类和对象的关系:特殊到一般,具体到抽象。
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。
对象是JAVA程序的核心,在JAVA程序中“万物皆对象”。
JDK中提供了很多类供编程人员使用,编程人员也可定义自己的类。
定义类 :
class 类名(首字母大写) {
//属性
private 数据类型 属性名; //建议增加相应的getter、setter方法
//方法 行为
//构造方法
}
例 :
Car c=new Car();
c.color;
在堆内存中产生一个实体 ,通过new操作符来完成。
对象的初始化过程
Person p=new Person("张",20);
1.new person类之后,加载person.class文件加载到内存中
2.执行该类中的static代码块,对Person.class进行初始化
3.在堆内存中开辟空间,分配内存地址
4.在堆内存中建立对象的特有属性,并对其默认初始化
5.对特定属性进行显示初始化
6.对对象进行构造代码块初始化
7.对对象进行对应的构造函数初始化
8.将内存地址付给栈内存中的对象p变量。
对象的创建与使用
概念
对象都属于某个类,对象都是唯一的,对象都有属性和行为,一切皆为对象
当对象被实例化后,在程序中可以通过对象的引用变量来访问该对象的成员。当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。
消息
调用对象的方法就是给对象发送了一个消息
一个对象能够接受某种消息,就意味着该对象向外界提供了某种服务
获取Class对象
类名.class 对象.getClass()
Class.forName("类的完全限定名")
匿名对象
匿名对象是对象的简化形式
new 实例名称();
使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化,如果对一个对象进行多个成员调用,必须给这个对象起个名字。
使用方式二:可以将匿名对象作为参数使用。
类的设计
类是抽象的。
定义类的时候需要进行数据抽象和行为抽象。
类与类之间的关系
IS-A:继承
泛化
实现
HAS-A:关联
关联
聚合
合成
USE-A:依赖
定义类
[访问修饰符] [修饰符] class 类名 [extends 父类] [implements 接口1, 接口2, ...] {}
属性:数据抽象
方法:行为抽象
构造器
创建对象:new 构造器()