JavaSE-day05
一、面向对象的编程
1.对象是一种特殊的数据结构(类似与c中的结构体),对象是通过类new出来的
2.Java是在内存中JVM虚拟机中执行的
1)方法区:存放类文件信息
2)栈内存:方法的执行区域先进后出,变量存储在栈里面,变量存储的是对象的地址(变量指向对象)
3)堆内存:对象存储在堆内存里面,对象有类地址指向方法区的类(对象指向类)
二、构造器:初始化对象成员变量的初始化
1.每个类自带一个无参构造器(可以不写出来再带的)
2.可以在类中自定义有参构造器(用有参构造器给对象赋值时,可以在new对象时完成成员变量的赋值)
3.定义:构造器无返回值类型且名必须与类名一致(一种特殊的方法)
4.若要定义有参构造器则无参构造器也必须写出来(否则用无参构造器new对象时会报错)
三、this关键字
1.this是一个变量,在方法中用来拿到当前对象。哪个对象调用该方法,就拿哪个对象。
2.this用来解决成员变量(对象中)与局部变量(方法参数中)名字冲突问题。
四、封装
1.合理隐藏、合理暴露
2.类中的成员变量基本上都要private修饰(公开成员用public修饰),每个成员变量提供提供get和set方法用于赋值和拿数据。
五、实体类
1.实体类:成员变量全部私有化,并且提供getter和setter方法,且带有无参构造器
2.实体类只包含数据的定义存取,不包含数据业务处理(如求平均值等业务)。
3.数据处理流程重新定义Service类,用来处理数据业务。
4.数据处理业务流程分析
1)创建Student实体类的数据业务类StudentService用来处理数据业务。
2)StudentService类中定义Student类传入数据对象Studnt处理(privat Student s;)
3)创建有参构造器传入Main函数中要处理的Student对象(同时写出无参构造器哦)
4)在Main中new一个StudentService对象(调用有参构造器传入数据)
5)用StudentService对象调用定义的数据业务方法。这样就实现了解耦(实体类与数据业务分开)
六、Static
1.静态变量(类变量)
1)每个类只有一份,所有成员共享
2)静态变量可以用类名访问,也可以用对象访问(不推荐)
3)访问自己类中的静态变量可以省略类名访问
4)应用场景:如记录创建了多少个对象count可以用static定义(在构造器中使count++)
2.实例变量(对象的变量)
1)每个对象都有一份,只属于当前变量
2)实例变量可以用变量名访问,不能能用类名访问
3.静态方法(属于类)
1)可以拿类名.方法名调用,也可以使用对象.方法名调用(不推荐)
2)访问自己类中的静态方法可以省略类名
4.实例方法(属于对象)
1)只能用对象.方法名访问,类名无法访问
5.注意
1)若方法只是定义一个功能,不需要访问对象的数据,则定义成静态方法(如until工具类中的方法,例验证码)
2)工具类中的方法定义成static,是为了方便其他类调用,若定义成实例方法则需要创建对象调用(占用内存空间)
3)为了防止2)中的创建对象,可以把工具类的构造器私有化,这样就无法在外部创建对象了
4)!静态方法中可以直接使用静态成员,不能直接使用实例成员
5)!实例方法可以直接使用静态成员,也可以使用实例成员
6) !实例方法中可以有this关键字,静态方法不能有this关键字
七、项目实现:电影展示
1.定义主函数Test(main)类:定义Movie类型数组、MovieService对象来调业务方法
2.定义实体类电影Movie:成员变量、构造器、get和set
3.定义电影业务操作类MovieService:构造器Movie数组传数据、具体方法

浙公网安备 33010602011771号