天天看点

Java精选笔记_面向对象(慨念、类和对象)

面向对象概念

在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。

相对于面向过程而言。是一种思想,强调的是功能的对象。

面向对象的本质:以类的方式组织代码,以对象的方式组织数据。如请人修车,我只面向修车的人,不面对修车的过程。只看中修好车的结果。

面向对象的三大特征

封装性

是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想

继承性

主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展

多态性

指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为

类与对象

定义

对象:是具体的事物,我们叫做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 构造器()

类的封装