java入门教程day05-面向对象 重点!

17 篇文章 0 订阅
17 篇文章 0 订阅

一、面向对象

1、总结图表

在这里插入图片描述

2、举例解释

举一个现实中的例子,当我们饿了,我们可以选择自己去买菜,洗菜,做饭, 当进行这个过程的时候,我们清楚买菜的过程,洗菜的过程,做饭的过程,这 就是面向过程,此外,我们还有另一种选择,那就是去饭店里吃,去饭店吃的 话,只要你告诉厨师你要吃什么,其他的过程你就不用管了,不考虑买菜洗菜 做饭的过程,而是只要等着厨师把饭做好就可以了,你所关注的,就是厨师做 没做好这就是面向对象的过程。

注意:当我们要做一些比较简单的场景的时候,面向过程比较好,而做一些比 较复杂的过程的时候,面向对象比较好

3、类与对象的关系

3.1类的定义:
将一些共有的属性和行为抽取出来,就形成了一个类,举例来说:人,人一般都有名字,性别,年龄这些属性,以及吃饭,说话等一些行为,将这些属性和行为抽取出来,就可以表示为人类。

3.2对象的定义:
将类这个宽泛的定义具体化,例如,人类可以泛指很多人,对象则指的是具体的某一个人。所指的这个人就是人类的一个对象。

3.3类和对象的关系:
根据一类对象的共有的特征和行为进行抽取,将这类事物用类来表示,将特征抽取成了属性,将行为抽取成方法—类是对象的抽取 /概括
利用new关键字来创建对应的类的对象/实例—对象是类的具体化

3.4成员变量和局部变量的关系
3.4.1定义位置:
成员变量(属性)是指定义在类内方法外的变量;定义在了方法或者语句内的变量就是局部变量。
3.4.2作用范围:
成员变量是作用在整个类内;局部变量只能作用于对应的方法或者语句中。
3.4.3内存位置:
成员变量是存储在堆内存中,并且自动的赋予了一个默认值;局部变量存在栈内存中,不会自动给默认值。
3.4.4生命周期:
成员变量随着对象的创建而存储到堆内存中,随着对象的回收而被销毁;局部变量在方法或者语句执行完成之后立即回收。

4、对象在内存中的存储

4.1对象的存储位置:
对象是存储在堆内存中的
4.2图形表示:
在这里插入图片描述
在这里插入图片描述

5、匿名对象

5.1匿名对象的定义:
根据名字我们可以知道,匿名对象,就是没有名字的对象,因为他没有名字,所以我们只能在创建它的时候使用一次。
5.2使用场景:
适用于那些我们只需要使用一次,不需要重复利用此对象的 情况
例如:
当我们写一方法,参数需要传入某个对象的时候,这个对象我们只需要用一次, 就可以使用匿名对象的方式。

6、构造方法

6.1定义:
在类中与类同名而没有返回值类型的方法叫做构造方法。
6.2构造方法的作用:
当创建对象的时候需要调用目标类的构造方法。
6.3知识点:
a:在类中,如果没有手动添加构造方法,那么Java会在编译的时 候添加一个默认的无参构造,如果手动添加了构造方法,Java就不再添加默认的构造方法了。

b:构造方法可以重载。

7、This

7.1 this的定义:
this代表当前在活动的对象—可以认为是一个虚拟对象—用于在类内调 用本类中的非静态方法和非静态属性的。
因为在java中所有的非静态的方法和属性都是通过对象来调用的,而在本类中如果想调用本类中的方法和属性,并没有本类的对象,所以要用到this来代表当前类的对象,调用属性和方法
注意:this语句不能放在main函数中使用

7.2 this语句:this();
This语句放在构造函数的第一行,表示用来在本类中调用其他的构造方法。

8、局部代码块

8.1局部代码块的定义:
在方法或者语句内部用{}括起来的一段代码,
例如:for循环
For(int i=0;i<5;i++){
代码块;
}
用代码括起来的代码块就叫做局部代码块
8.2局部代码块的意义:
限制变量的使用范围和生命周期,以提高内存的利用率

9、构造代码块

9.1构造代码块的定义:
在类内方法外用{}括起来的一段代码,也叫做初始化代码块
图例:
在这里插入图片描述
9.2构造代码块的意义:
因为构造代码块是先于构造函数执行的,所以我们可以通过构造函数来实现一 些需要在对象创建以前所需要的初始化的工作。

二、面向对象的特征

面向对象的特征为:封装、继承、多态(抽象),抽象还存在争议。

1、封装

1.1定义
封装是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。封装是一种信息隐藏技术。
简单来讲:封装就是将属性私有化,提供公有的方法访问私有属性
1.2体现形式
方法:
就是在程序里如果需要多次书写同样的属性或者其他相同的代码,为了避免代码的冗余,我们可以将相同的代码内容封装到相同的方法里,在外界直接调用就好。提高了代码的复用性
举例说明:
方法被封装前:
在这里插入图片描述
封装后:
在这里插入图片描述
1.3属性的私有化
将属性私有化,为了防止在类外操作属性的时候给属性赋值一些不合常理的值,因此将属性私有化,提供了对类外的访问方法来间接的操作属性。——属性私有化保护了数据的安全性。
将属性私有化之后,可以通过在类内定义get和set方法来实现在类外通过对象来实现对私有属性的操作。
举例说明:
在这里插入图片描述
1.4内部类
内部类也是封装的一种体现形式。(在此不做详细的赘述,后续会详细讲解内部类)

2、继承

2.1定义
如果一些类中含有相同的属性和方法,那么可以将这些相同的属性和方法提取到一个新的类中,利用extends关键字让原来的类和新的类产生联系,而这个关系称之为继承。新产生的类称之为父类(也可以称之为超类/基类),原来的类称之为子类(也可以称之为派生类)。
子类通过继承父类可以使用父类中的一些方法和属性。
注意:在Java中支持的是单继承——一个子类只能有一个父类,而一个父类可以有多个子类。
2.2格式
在这里插入图片描述
2.3特征
a.继承关系是传递的。
b.继承简化了人们对事物的认识和描述,能清晰的体现相关类间的层次结构关系。
c.继承提供了软件复用功能。
d.继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。
e.提供了多重继承机制。通过使用接口机制来实现多重继承。
2.4优点
提高复用性、提高安全性、统一结构。
2.5使用条件
1.子类拥有父类非private的属性和方法。
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方法实现父类的方法。

2.6权限修饰符
注意:权限修饰符用于限定变量或者方法的使用范围。其中public范围最大,private范围最小。

修饰范围如下:
在这里插入图片描述
2.7方法的重写
定义:
子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
简单来讲就是指在父子类里存在了方法签名(方法名+参数列表)完全一致的的方法,就构成了方法的重写(覆盖)。
遵循规则:
方法的重写需要遵循“两等两小一大”
1.方法签名要求完全一致
在这里插入图片描述

2.如果父类里的返回值是基本数据类型/void/最终类,那么子类里重写的返回值类型必须一致(如果父类的方法是private的话,子类是无法被继承的,即使子类重新定义这个方法,也不算重写)
在这里插入图片描述
权限修饰符为private
在这里插入图片描述
3.如果父类方法的返回值类型是一个引用类型,子类方法的返回值类型是父类方法的返回值类型的子类
在这里插入图片描述
4.子类方法的权限修饰符的范围要大于等于父类方法权限修饰符的范围
在这里插入图片描述
注意:对于8种基本数据类型之间是没有继承关系的,他们是同级关系

3、多态

定义
多态是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。多态主要针对对象的行为即方法,而不是对象的属性。

简单来讲java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。
动态绑定
实现多态的技术称为动态绑定,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
作用
降低模块与模块之间的依赖性就是解耦;多态的产生使为了解耦,消除类型之间的耦合关系。
运行时多态的必要条件:
要有继承、要有重写、父类引用指向子类对象。

a、在编译时期就要进行动态绑定的运行过程; 就是方法的重载
b、在运行时期才能确定绑定的运行过程。就是向上造型、方法的重写。
继承是运行时多态的前提。
c、向上造型
定义
用父类声明的,用子类来创建实际对象叫向上造型。
子类的对象可以向上造型为父类的类型。即父类引用子类对象,这种方式被称为向上造型。

注意: 向上造型是用父类声明用子类初始化——由于这个对象是父类声明的,所以对象能够干什么需要看父类;由于是用子类初始化的,具体怎么干要看子类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值