面向对象第二天---对象

一、类的定义

1.对一类事物的抽象(将事物中的相同属性抽象成文一个类),同一类事物必须具有相同属性。

2、属性和数据(如 姓名:刘娜,其中姓为属性,刘娜为数据),相同属性的便可看作一类事物,但同一类的不同对象可以具有不同的属性。比如,刘娜这个对象有个头发颜色属性,但是李江权没有头发,故李江权没有头发颜色这个属性,但是在刘娜和李江权共有的类中不能定义头发颜色这个属性。

3、一个类中只能有一个用public申明的主类。

二、面向对象(Object Oriened)

1、对象:一类事物中具体存在的每个个体。

2、面向对象:是一种思想,把构成问题事物分解成了各个对象。建立对象的目的不是为了完成一个步骤,为了描述某个事物中解决问题中步骤的行为。


三、面向对象的三大特性

1、封装

2、继承

3、多态


四、面向对象的语法

访问修饰符 关键字 class 类名称{

属性 1;
属性 2;


构造器/构造方法(){}

}
五、创建对象(类的实例化)

1、创建对象/实例(类的对象/类的实例): 数据类型 变量名 = new 数据类型();

2、对象类型:八种基本类型之外,是以类作为数据类型等。

3、匿名对象:没有引用值,赋值的时候通常会用到,等价于先new在赋值(直接new )。但是其只被使用一次,但是没有应用指向他,会造成匿名对象在使用过后变为垃圾对象,等待gc的回收。


六、构造方法:

构造方法的名字与类名保持一致,

1、无参构造

2、有参构造(和普通有参方法差不多,只不过方法名和类名相同,不写返回值类型): 在实例化的同时初始化

如果没有给定构造方法,那么会默认给定一个一个无参构造方法。


七、this

理解为隐式的创建了一个当前类对象。


八、对象内存

1、方法区里面村的是.class的信息、static修饰静态成员变量(很少会存static修饰的方法)

2、在一个JVM中只有一个方法区和一个堆内存,被所有的线程所共享。每个线程都具有一个独立的栈空间

3、方法存在栈内存中,不在堆内存中

4、局部变量存在栈内存中。

5、类加载:读取类的属性,开辟堆内存的时候可以知道开辟什么类型的属性。加载的信息放在方法区中

原文地址:https://www.cnblogs.com/JQbiu/p/10801886.html