JAVA入门(六)---面向对象编程基础

一、面向对象入门

1、面向过程编程

开发一个个的方法,有数据要处理了,就把数据交给方法

2、面向对象编程

开发一个个对象,有数据要处理了,就把数据交给对象,再调用对象的方法来完成对数据的处理

二、深刻认识面向对象

1、面向对象的好处

面向对象编程更加符合人类的思维习惯,可以让编程更简单、更直观

2、程序中的对象是什么

①对象实际是一种特殊的数据结构

②可以把对象看成是一张具体的数据表,表中记录什么数据,对象就处理什么数据

3、怎么得到对象

①对象是通过类得到的:类名 对象名 = new 类名();

②类可以理解成对象的设计图,或者是对象的模板

③对象可以理解成是一张数据表,而数据表中有哪些数据,是由类来设计的

④结论:一定要先设计类,然后再使用类生成具体的对象

4、有了对象如何访问对象的属性和方法

①访问属性:对象名.属性名

②访问方法:对象名.方法名()

三、对象在计算机中的执行原理

①以Student s1 = new Student();为例

②每次new Student(),就是在堆内存中开辟一块区域,用来存储一个学生对象

③s1变量里面记住的是学生对象的地址------因此s1是引用数据类型

④成员变量(name、price)的数据放在哪里,存在于哪个位置?------数据是放在对象中的,因此存放在堆内存中

四、类和对象的一些注意事项

1、类名建议使用英文单词,首字母大写,满足驼峰模式,且要有意义,达到见名知意的效果,比如:Student、Car...

2、类中定义的变量也成为成员变量(即对象的属性),类中定义的方法也称为成员方法(即成员的行为)

3、成员变量本身存在默认值,同学们在定义成员变量时一般来说不需要赋初始值(没有意义),成员属性默认值规则:

4、一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名

5、多个变量指向同一个对象,需要注意:一个变量对对象做了修改,其他变量看到的都是被修改后的结果

6、如果某个对象没有任何变量指向它,需要注意什么?

①当堆能存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的"垃圾"

②Java存在自动垃圾回收机制,会自动清除掉垃圾对象,程序员不用操心

五、this关键字

1、this是什么

this就是一个变量,可以用在方法中,用来拿到当前对象,哪个对象调用方法,this就指向哪个对象,也就是拿到哪个对象

2、this的应用场景

用来解决对象的成员变量与方法内部变量的名称一样时,导致访问冲突问题的

六、构造器

1、作用

用来初始化对象,并返回对象的地址

2、定义构造器的结构

修饰符 类名 (参数列表) {具体的代码}

3、格式:new 构造器名()

4、构造器的分类

①无参数构造器

初始化对象时,成员变量的数据均采用默认值

有了对象之后,再调用成员变量为对象进行赋值

②有参数构造器

在初始化对象的时候就自动为对象属性进行了赋值

5、构造器的注意事项

①构造器的名字必须和类名保持一致

②定义构造器的时候一定不能写返回值类型,void也不行

③任何类定义出来,默认自带无参构造器,写不写都有

④一旦定义了有参构造器,无参构造器就没有了,此时就需要自己写无参构造器了

七、封装

1、封装是什么

①是面向对象三大特征(封装、继承、多态)之一

②用类设计对象处理某一个事物的数据时,把要处理的数据,以及处理这些数据的犯法,设计到一个对象中去

2、设计规范

八字口诀:合理隐藏、合理暴露

3、如何更好的封装

①合理隐藏:把成员属性用private关键字进行一个修饰,修饰后就只能在当前类中进行访问了

②合理暴露:必要的时候为成员变量提供public修饰的getter、setter方法暴露其取值和赋值

③成员方法根据是否需要在当前类外面决定使用private隐藏还是使用public对外暴露

④封装的一个好处是让数据更安全,不对外直接暴露数据本身,同时也不需要对外暴露方法的实现细节

⑤示例:

 public class Student {
     private int age;
     public void setAge(int age) {
         if (age >= 0 && age <= 200) {
             this.age = age;
         } else {
             System.out.println("您输入的年龄数值有误!");
         }
     }
 ​
     public int getAge() {
         return this.age;
     }
 }

八、实体JavaBean

1、也可以称为实体类,是一种特殊形式的类,其对象可以用于在程序中封装数据

2、学生类、老师类、汽车类都是javabean,但是测试类不是javabean

3、实体类javabean的书写要求:

①成员变量使用private修饰

②提供成员变量对应的setXxx()/getXxx()方法

③提供一个无参构造器,有参构造器可写可不写

④如果提供了有参构造器,一定不要忘了写上无参构造器

九、补充:成员变量和局部变量的区别

1、类中的位置不同:

成员变量在类中方法外;局部变量常见于方法中

2、初始化值不同:

成员变量有默认值,无需初始化;局部变量没有默认值,使用之前需要完成赋值

3、内存位置不同:

成员变量在堆内存;局部变量在栈内存

4、生命周期不同:

成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,随着方法的运行结束而消失

5、作用域:

成员变量在整个类中都有效;局部变量只在所归属的打括号中有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值