
原文链接:https://blog.csdn.net/sugar_no1/article/details/86366714
面向对象
面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。
特点:封装、继承、多态
①封装
两层含义:一层含义是把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元(即对象)中;另一层含义指“信息隐藏”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓,或只允许使用对象的功能,而尽可能隐藏对象的功能实现细节。
②继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
设计对象并使用
类:对象的共同特征;对象:真实存在的具体实例。 结论:在java中必须先创造类,在创造对象。
一般public class 类名{包含:成员变量、成员方法、构造器}
得到类的对象:类名对象名=new 类名()
注意事项:
1、类名首字母建议大写,满足驼峰模式,不应用关键字。
(1) 在JAVA中:类名的标识符一般用大驼峰式书写格式,方法和变量的标识符则多用小驼峰式书写格式。
(2) 1、小驼峰式命名法(lower camel case):
第一个单词以小写字母开始,第二个单词的首字母大写。例如:firstName、lastName。
(3) 2、大驼峰式命名法(upper camel case):
每一个单词的首字母都采用大写字母,例如:FirstName、LastName、CamelCase,也被称为 Pascal 命名法。
2、一个java类文件中可以定义多个class类,但只能有一个类是public修饰,而且public修饰的类名必须成为代码文件名。【实际开发还是建议一个代码文件只定义一个类】
3、 
使用类的具体案例
1. public class student {
2. String name;
3. int number;
4. String sex;
5. int age;
6. public void event(){
7. System.out.println(name + “ is “+age+” years old.”);
8. }
9. }
1. public class test {
2. public static void main(String[] args) {
3. student a=new student(); //这是一个构造器,用来初始化一个类,并返回对象的地址。
4. a.name=”大白”;
5. a.age=25;
6. a.event();
7. }
8. }
对象在内存中运行的机制**
对象在内存中运行的过程
1、虚拟机分为方法区(存放“public class 类名”这类方法)、栈内存(存放main方法)、堆内存(对象存放的地方,一般new出来的对象都是存放在堆内存)
2、先将test类方法放在方法区,然后虚拟机会将main方法提取到栈内存中;
3、‘Car c1=new Car();’
(1) 将car类提取到方法区;
(2) 栈内存开辟出一个引用类型变量c1,里面暂时没有存放内容;【基本数据类型变量:存放的是数据本身。引用数据类型变量:存放的是对象的地址。例如:数组。】
(3) 在堆内存中开辟出一个存储空间,用来代表对象,对象里会开辟一些空间来存放属性(此时的属性值是默认值)和成员方法的应用地址(真正的方法在方法区,通过这些地址来指向方法区的方法)
(4) 将堆内存对象的地址赋值给栈内存引用类型变量c1(本质上,栈内存上的变量是一个指针)
4、‘通过栈内存中的对象存储的地址找到堆内存的对象,然后修改对象里的属性。
5、通过c1的地址找到对象里的成员方法引用地址,在方法区中找到相应的方法,然后将该方法提取到栈内存运行
问题:
1、对象存放的位置?堆内存
2、Car c=new Car();c变量名汇总存储的是什么?对象在堆内存中的地址
3、成员变量的数据存放在哪里?存放在对象中,也就是堆内存中。
两个变量指向同一个对象
垃圾回收:当堆内存中的对象没有被任何变量所引用(指向),就会被判定为内存中的“垃圾”。Java中有自动垃圾回收器。
模拟购物车模块
构造器:定义在类中,可以用于初始化一个类的对象,并返回对象的地址。


This关键字:代表当前对象的地址。可以用于指向当前对象的成员变量和成员方法。
在实际开发中,需要把我们的变量设计的见名知意。this.name可以用来表示当前对象的成员变量。
封装
面部对象的三大特征:封装、继承、多态
封装:告诉我们,如何正确设计对象的属性和方法;
封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。

标准javabean:
称为实体类,即在现实生活中真实存在的类,如学生类,用户类。其对象可以用于在程序中封装数据。
书写要求:
1、成员变量使用private修饰
2、提供成员变量对象的set()、get()方法
3、提供无参构造器,有参构造器可写可不写。
自动生成setter、getter
1、右键,选择generate生成。然后选择生成setter和getter
自动生成有参数构造器
右键,选择generate生成。然后选择生成function,然后全选
自动生成无参数构造器
右键,选择generate生成。然后选择生成function,然后选择selectnone
成员变量、局部变量区别

面向对象案例-电影信息展示
过程:创建电影类,在创建电影对象,三个电影对象采用数组存储,一次遍历数组,取出信息。
