一、类的定义
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、类加载:读取类的属性,开辟堆内存的时候可以知道开辟什么类型的属性。加载的信息放在方法区中