JavaSE——基础知识回顾08之面向对象部分

文章目录

本次的任务是涉及到Java基础知识学习回顾中的一个十分重要的知识点——面向对象,这也是一个难点,个人觉得难度最大的应该是的面向对象三大特点:封装、继承、多态。中的多态知识点



前言

本次文章是分阶段来学习与完成的,今天主要是先介绍什么是面向对象的基础内容。


:以下是本篇文章正文内容,下面案例可供参考

一、什么是“面向对象”?

对象:万物皆对象(Object),在IT人员的世界里所见所闻都是对象

什么是面向对象编程?
我想只要你的第一想法不是下面这张图里的想法的话我觉得你还可能适合编程,思想端正了还有的救
在这里插入图片描述

通俗地理解面向对象编程:那么到底什么是面向对象编程呢?其实很简单,我们只需要按照我们正常的思维方式去思考就行了,比如还是 制作一个木制家具,那么在实际生活中是怎样办到的呢?
1、原材料准备,这应该是采购商的工作,其他的环节他无需插手;2、家具设计图,这是设计公司的工作;3、找到合适的木匠,这是用人单位应该做的。4、谁来做家具呢?木匠。于是我们把这些人组合到一起就可以完成这样一个工作,编程者更像是一个项目的负责人,需要知道完成这项工作需要用到哪些人,这些人应该能够完成哪部分的工作,每个人各司其职。

类:
现实生活中:类是一种抽象的概念,具有实例的大多数具体的特征属性,所谓“物以类聚,人以群分”正是此理,先有实体在有类。
程序世界中:
类:抽象的概念,把具有相同属性和方法的对象归为一类
编写顺序:先有类,在创建对象
类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象
举例说明:
现在有轿车的实例:1、玛莎拉蒂 2、兰博基尼 3、保时捷 4、雷克萨斯 。以上均为轿车,他们的共同特征是 会跑(run) 有四个轮子 有名字 等等,其次呢,不管他们的品牌怎么样,他们的设计初稿都是要遵循轿车的设计图纸模板来进行生产制造,然而这个设计图纸就是轿车的类,而具体生产出来的不同品牌的车子便是通过这个类实例出来的不同对象。 总而言之,类 就是一个模板
注意:
1、类中 只有属性和方法
2、属性也叫作全局变量
3、方法分为成员方法和静态方法

二、进入面向对象

(1)、类的定义

public class 类名{
  // 属性也叫作全局变量,分为成员变量和静态变量
  //成员变量的定义
  数据类型 变量名;
//静态变量
static 数据类型 变量名;//静态变量可以通过类名来访问
//方法分为成员方法和静态方法

//成员方法
访问修饰符  返回值类型 方法名 ([参数]){
	
	}
//静态方法
访问修饰符 static 返回值类型 方法名([参数]){
	
	} 
}

(2)对象的定义

//创建对象的语法:
类名 对象名=new 类名();
new 出的构造方法():属于对象,其存在于内存空间中的 堆 内存中
类名 对象名: 对象名属于引用,存的是对象在堆内存中的地址

/**
*操作对象:
*1、设置成员属性
*2、获取成员属性
*3、调用成员方法
*/

(3)成员属性/成员变量

语法结构:数据类型 变量名;
编写的位置: 类里,方法的外面

成员变量 与 局部变量的区别
成员变量:类中,方法的外面的变量也称实例变量 ,并且系统会赋默认值,作用在整个类中
局部变量: 方法内的变量,系统不会赋默认值,作用在方法

(4)成员方法

语法结构: 访问修饰符 返回值类型 方法名([参数]){}
编写的位置: 类中

成员方法 与 静态方法的区别
成员方法: 属于对象的方法,必须使用对象的调用
静态方法: 属于类的方法,使用类名调用

(5)构造方法

含义: 和 new 一起时是创建对象的功能
作用:可以完成对象创建时的初始化,即创建对象的时候就能把数据赋值给该对象
创建语法:

     // public  类名(){}
     public Person(){
     	
     	}

特点:
1、与类名相同的方法
2、没有返回项目
3、可以重载,即可以改变其参数列表来定义多个构造方法,在完成对象的实例化的时候可以通过传入参数的数量来自动进行匹配所需要的构造方法,如果不写构造方法,系统会默认提供一个无参的构造方法
在这里插入图片描述

二、深入面向对象

(1)private-私有化

含义:私有化,仅能在本类中使用,外部无法直接访问
作用:
1、修饰属性:私有化属性,不能让外界使用
2、修饰方法:私有化方法,不能让外界使用
应用场景:不让外界访问的属性和方法就用private修饰

(2)封装(三大特性之一)

步骤:
1、私有化属性
2、添加get/set方法
好处:外界不可以直接操作属性,必须通过get/set方法操作,可以在get/set方法中做格外的功能

(3)this - 本对象

含义:代表本对象,this出现方法里,标识调用该方法的对象
作用:
1、this.属性:调用本对象的成员变量
2、this.方法:调用本对象的方法
3、this():调用本对象的构造方法(在一个构造方法中的第一句调用另外一个构造方法)

(4)分包

原因:在完成一个项目的时候通常会在不同的包中进行项目的创建,主要是以后工作的时候能够和同事们一起以一个商量好的方式来完成任务
基本作用:防止类的重名问题
项目作用:项目中有众多的类,把相同功能的类放在同一个包中,方便管理
工具类:com.dream.util/tool/
实体类:com.dream.vo/bean/entity
数据库类:com.dream.dao/mapper

(5)static-静态关键字

作用:
1、修饰属性
2、类加载到方法区是,JVM会扫描该类的所有属性,并把静态属性加载到静态区中,静态属性属于类属性,该类所有的对象都共享该属性(即:只有一份可以供所有对象使用,一个对象使用后它过后所做的改变将会影响到下一个对象使用时的情况)
3、静态属性直到项目结束时才会被回收

static修饰方法的时候:
属于类方法,直接用类名调用
应用场景:工具类

静态代码块
1、静态代码块是类加载到方法区是才会被调用,该代码块只能初始化静态变量
2、代码块是创建对象时优先于构造方法可以初始化成员变量和静态变量
3、构造方法是创建对象时调用,该方法可以初始化成员变量和静态变量

成员变量 和 静态变量的区别
成员变量:属于对象的变量,每个的对象独享一份
静态变量:属于类的变量,每个对象都共享一份(前面已经解释过了)


三、继承(面向对象三大特性之一)

(1)继承的概念

继承的概念:尽可能地隐藏对象内部实现细节,控制对象的修改以及访问权限。
措施:通过使用权限修饰符 “private”修饰属性或方法,将内容设置为本类可见,若是修饰属性的话,需要提供相应的get/set方法作为媒介来进行内部访问,其中可以通过对 set方法进行修改从而达到外部访问时避免非法数据的提问。避免了一些不合法的问题出现。
在这里插入图片描述

(2)类的继承的使用

什么是继承:
现实中:生活中的“继承”是施方的一种赠与,受方的一种获得,即将一方所拥有的东西给予给另一方,例如,你爹给你的遗产
程序中:程序中的继承则是类与类之间特征和行为的一种赠与或获得。两个类之间的继承关系,必须满足" is a"的关系,例如 动物类(class Animal)与 狗类(class Dog),Dog is a Animal关系成立,即满足继承的条件。父类的选择一般都是能够囊括众多具体特征的抽象类。
选择条件:
1、功能越精细,重合点越多,越接近直接父类
2、功能越粗略,重合点越少,越接近Object(在Java中“Object”是所有类的超类/父类)类,万物皆对象
继承的语法: class 子类 extends 父类{}// 定义子类时,显示继承父类
应用:产生继承关系后,子类可以使用父类中的属性和方法,也可以定义子类独有的属性和方法
好处:既提高代码的复用性,有提高代码的可扩展性。
继承的特点(重点)
1、Java是单继承,一个类只能有一个直接父类,但可以多级继承、属性和方法逐级叠加。
2、 类中的构造方法只负责创建本类对象,不可继承
3、private修饰的属性与方法无法继承(前面已经说过 “private”修饰的只能在本类中所见)
4、父子类不在同一个package中的时候,default修饰的属性和方法(default修饰的只能在同包中可见)

(3)继承中的构造方法

注意事项:
1、继承中的构造方法是无法进行继承的,因为这个构造方法

(4)"super"关键字

作用:用来调用父类中的属性、方法、构造方法(记住这是调用不是继承,别搞混了,子类是无法继承父类构造方法的)

小案例(1):

在这里插入图片描述在这里插入图片描述

(2)小案例(2):

在这里插入图片描述

(5)方法的重写/覆盖

内容:
概念:当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行重写(Override)
作用:有效提高了工作效率,配合super关键字能够优化代码和提高代码的使用效率

重写规则:

(6)访问修饰符

记住下面的表(十分重要):
在这里插入图片描述

总结

今天的任务只是初识面向对象,以及对面向对象的三大特点之一的 “封装”做了一些解释,难度并不大,明天可能有点麻烦,将会进入到三大特点的“继承”、“多态”。由于类加载机制我还没能完全弄清楚打算明天或者周末的时候再好好研究一番然后再整理出来作为补充,其中涉及到一个高频的面试题(类加载机制)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sugar-free->小粽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值