JavaSE - 面向对象编程03

01 多态

01_01 认识多态

【1】什么是多态:多态是在继承或实现下的一种现象,表现为 对象多态 和 行为多态。

【2】现实生活中:

          ① 对象多态:一个人可以拥有多个身份

          ② 行为多态:不同的人完成某个事情的表现结果不同

【3】代码中如何体现对象多态:

          People p1 = new Student();

          People p2 = new Teacher();

【4】代码中如何体现行为多态:

          p1.run();

          p2.run();

【5】构成多态的前提:

   ① 存在继承/实现关系。

   ② 父类引用指向子类对象。

   ③ 存在方法的重写。

【6】注意:成员变量并不具有多态性。

01_02 多态的好处

   ① 在多态的形式下右边对象是解耦合的,更便于扩展和维护,即父类引用指向的子类对象可以随时切换,而后面的逻辑代码并不需要更改。

   ② 使用父类引用可以作为方法的形参或返回类型来接收一切子类对象。

01_03 多态下的类型转换问题

【问题引入】父类对象是无法调用子类独有的方法?如何解决:对父类引用进行强制类型转换,且在转换之前使用instanceof关键字判断父类引用指向的对象是什么类型的再进行转换。

02 final关键字

02_01 认识final

【1】final是最终的意思,可以用来修饰类,方法,变量。

【2】final修饰类:被final修饰的类不能被继承。可以给工具类用final修饰。

【3】final修饰方法:被final修饰的方法不能被重写。可以看一下模板方法设计模式。

【4】final修饰的变量(成员变量,局部变量):被final修饰的变量,变量只能被赋值一次。

         注意:① final修饰基本类型的变量,变量存储的数据不能被改变。

                    ② final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向的对象内容可以发生改变。

                    ③ 技巧:我们可以把方法入参的类型用final修饰,这样可以保证入参的值不能被更改。

         说明:① final修饰的类变量又称常量,常量名的命名格式为,单词全大写,单词之间用下划线连接。

                    ② final修饰的实例变量很少用,因为实例变量数据对象,每个对象都有一份,而此时你又将该变量用final修饰此时该变量中存储的值并不能改变,那还不如干脆定义成常量呢。 

02_02 常量详解

【1】语法:修饰符 + static final

         常量名:单词全大写,单词之间用下划线连接

【2】应用场景:常用于记录系统的配置信息。

【3】使用常量的优点:可读性好,可维护性强。可读性好是因为我们要去使用这些信息时直接用常量名就可以,而常量名通常以见名知意的约定创建,例如CLASSROOM我们一下就能明白这个常量值代表什么。可维护性好是因为当我们想修改某个常量值时直接修改即可,此时代码中使用常量值的地方,常量值的内容会自动发生变化,而不需要我们一个个手动修改。

【4】执行原理:程序编译后,常量会被宏替换:出现常量的地方全部会被替换成其记住的字面量,这样可以保证使用常量和直接使用字面量的性能是一样的。(也是优点之一)

03 抽象类

03_01 认识抽象类

【1】概念:Java提供了一个关键字abstract,它是抽象的意思,可以用它来修饰类、成员方法。

   ① 被abstract修饰的类叫做抽象类。

   ② 被abstract修饰的方法叫做抽象方法,抽象方法只有方法签名,不能有方法体。 

【2】注意事项:

   ① 抽象类中不一定有抽象方法,但有抽象方法的类一定要是抽象类。

   ② 抽象类中普通类有的5大金刚,它都可以有。

   ③ 抽象类只能被继承,不能实例化对象(它有公开的构造器和它能不能创建对象,在抽象方法的概念里是没有因果关系的)

   ④ 一个类继承了抽象类,它就必须重写抽象类中的所有抽象方法,否则这个类也必须是抽象类。

03_02 使用抽象类的好处

03_03 应用:模板方法设计模式

【1】模板方法解决了什么问题:用于解决方法中存在重复代码的问题。

【2】怎样写模板方法设计模式:① 在父类中定义一个由final修饰的模板方法,里面存放重复代码的内容

                                                    ② 在父类中定义一个抽象方法,模板方法中非重复代码的部分调用该抽象方法

                                                    ③ 在子类中只需要重写父类中的抽象方法即可,模板方法不用重写,这也是为什么模板方法由final修饰的原因(被static,private,final修饰的方法不能被重写)

04 接口

04_01 接口概述

【1】概念:Java提供了一个关键字interface,使用这个关键字可以定义出一个特殊的结构:接口

【2】接口中的内容只能有两部分:

   ① 成员变量,默认定义成常量。

   ② 成员方法,默认定义成抽象方法。

【3】特点:

   ① 接口是不能实例化对象的。

   ② 类可以通过implements关键字来实现多个接口,实现接口的类又被称为实现类。

   ③ 实现多个接口的实现类必须重写所有接口中的抽象方法,否则它自己必须定义成抽象类。

   ④ 接口中的成员很多都是用public修饰的,是因为接口中的东西本身就是供别人使用的,当然要公开出来咯。

04_02 接口的好处

【1】好处:

   ① 弥补了单继承的不足,一个类可以同时实现多个接口,从而扩展子类更多的特征和能力。

        提问:为什么我们要让类去实现接口从而去扩展可类的特征和能力,而不是直接把代码写在类中?答:通过接口去扩展特征和能力,当别人看到了implements后面的内容其实就可以显性地知道了这个类有哪些能力,而直接把代码写在类中反而不直观,也不方便代码的复用。

   ② 程序可以面向接口编程,这样可以更方便地切换各种业务实现,和多态好处的解耦合性一致。

04_03 接口的综合案例

提示:学生类,学生操作类,接口,操作类1,操作类2;在学生操作类的操作方法中使用接口引用调用操作类1/2的相关方法。

04_04 其他:JDK8开始,接口中新增的三中方法

【为什么要新增这三个方法】:① 增强了接口的能力 ② 如果说有一天我们需要给接口新增一个方法,那么所有实现这个接口的子类都得重写该方法,假如有100个子类,显然效率不高,在JDK8之后引入新增的三个方法,我们此时就可以直接在接口中把需要新增的方法写成default/private/static方法,这样子类们就可以不用都去实现一遍了。

04_05 其他:接口的多继承、使用接口的注意事项(了解)

 

面向对象编程是一种编程范式,它将程序的构建和设计思路以面向对象的方式进行组织和实现。在Java中,面向对象编程是基于Java SE(Standard Edition)的一种编程方式。第07讲主要介绍了面向对象编程中的一些基本概念和关键术语。 在面向对象编程中,我们将程序中的数据和对数据的操作(方法)封装在一起,形成一个对象。对象由两部分构成:属性和方法。属性是用来描述对象的特征,而方法则是对象可以执行的操作。对象之间通过消息(方法调用)进行通信和交互。面向对象的核心思想是通过封装、继承和多态实现程序的复用和扩展。 封装是面向对象编程中的一个重要概念,它指的是将类的属性和方法进行封装,使得外部无法直接访问和修改对象的内部状态,只能通过公共的方法来操作属性和执行方法。封装提供了一种将数据和行为组合在一起的方式,可以保护数据的完整性和安全性。 继承是面向对象编程中的另一个重要概念,它指的是通过定义一个新的类来继承现有类的属性和方法。通过继承,子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改。继承提供了一种代码复用的机制,可以减少重复编码的工作量。 多态是面向对象编程的又一个重要概念,它指的是同一类型的对象在不同的情况下可以有不同的表现形式。多态通过方法的重写和方法的重载实现。方法的重写指的是在子类中重新定义和实现父类的方法,方法的重载指的是在同一个类中可以定义多个同名但参数列表不同的方法。 总结来说,面向对象编程是一种将程序组织和设计思路以对象为中心的编程方式。在JavaSE中,我们可以通过封装、继承和多态来实现面向对象编程的目标。封装可以提高程序的可维护性和可复用性,继承可以减少重复编码的工作量,多态可以灵活地操作对象。掌握这些基本概念和关键术语,可以帮助我们更好地理解和应用面向对象编程的思想。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值