当前位置: 首页 > news >正文

【Java零基础入门篇】第 ⑤ 期 - 抽象类和接口(二)

博主:命运之光
专栏:Java零基础入门

学习目标

1.了解什么是抽象类,什么是接口;

2.掌握抽象类和接口的定义方法;

3.理解接口和抽象类的使用场景;

4.掌握多态的含义和用法;

5.掌握内部类的定义方法和使用方法;

目录

多 态

多态的体现

多态的优点

内 部 类

成员内部类——非静态

成员内部类——静态

局部内部类

匿名内部类

面向接口编程

总结


多 态

多态的体现

多态性,是面向对象中重要的概念,通俗的说,多态是指实现接口的多个类一个父类的多个子类虽然有相同的方法,但是具有不同的表现方式

多态性在开发之中可以体现在两个方面:

方法的多态性:重载与覆写

  • 重载:同一个方法名称,根据不同的参数类型及个数可以完成不同的功能;
  • 覆写:同一个方法,根据实例化的子类对象不同,所完成的功能也不同。

对象的多态性:父子类对象的转换

  • 向上转型:子类对象变为父类对象;
  • 向下转型:父类对象变为子类对象。

多态的优点

可维护性:

  • 基于继承关系,只需要维护父类代码,提高了代码的复用性,大大降低了维护程序的工作量;

可扩展性:

  • 把不同的子类对象都当作父类看待,屏蔽了不同子类对象间的差异,做出通用的代码,以适应不同的需求,实现了向后兼容。

内 部 类

定义:把类定义在另一个类的内部,该类就被称为内部类。

修饰符 class 外部类名称{

修饰符 class 内部类名称{

………..

}

………..

}

分类:

  • 非静态成员内部类;
  • 静态成员内部类
  • 局部内部类;
  • 匿名内部类;

成员内部类——非静态

非静态成员内部类——定义在外部类成员位置的类,未使用static权限修饰符。

特点:可以使用外部类中所有的成员变量和成员方法(包括private的)。

  • 在外部类外创建一个非静态内部类对象的语法格式如下:
  • 外部类名.内部类名 引用变量名 = new 外部类名() . new 内部类名();

通过成员内部类来实现多继承

类不支持多继承,可以通过接口实现,但接口需要实现类实现其所有方法,所以这时可以通过内部类来间接实现多继承

成员内部类——静态

定义:用static关键字修饰,定义在类成员位置的类称为静态内部类

🍓🍓静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,可以用”类名.静态成员名”直接获得。

🍓🍓因而静态内部类可以直接可以通过“ 外部类名.内部类名” 获得。

局部内部类

局部内部类——就是定义在一个方法或者一个代码块里面的类;

特点:主要是作用域发生了变化,只能在自身所在方法和代码块中被使用。

修饰符 class 外部类名称{

修饰符 返回值类型 成员方法名([参数列表]){

        class 局部内部类名称{

                ………..

                }

        }

}

总结:关于类的权限修饰符

  • 外部类: public / 缺省(defaul);
  • 成员内部类: public /protected / 缺省(default)/private;
  • 局部内部类: 什么都不加。

匿名内部类

🍓🍓匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

格式:

接口名称|抽象类名称 对象名 = new 接口名称()| 抽象类名称(){

//覆写所有抽象方法;

} ;

特点:

  • 匿名内部类必须继承父类或实现接口
  • 匿名内部类只能有一个对象
  • 匿名内部类对象只能使用多态形式引用(向上转型)。

面向接口编程

🍓🍓接口本质是一种规范和约束,反映了系统设计者对系统的抽象理解。

🍓🍓面向接口编程就是先把客户的业务逻辑功能提取出来,作为接口,业务具体实现通过该接口的实现类来完成。

总结

封装:隐藏数据的实现细节,让数据的操作模块化,提高代码复用性;

继承:复用方法,从对象的行为这个层面,提高代码的复用性;

多态:复用对象,程序运行时同一个对象表现出不同的行为;

http://www.lryc.cn/news/66744.html

相关文章:

  • Halcon 集合运算(差集difference、交集intersection、并集union2、打散connection与 合集 union1)
  • Allegro约束规则设计
  • PyQt5桌面应用开发(11):摸鱼也要讲基本法之桌面精灵
  • Talk预告 | 大连理工大学IIAU Lab在读博士生严彬:走向通用实例感知
  • 2023-05-04 LeetCode每日一题(摘水果)
  • [工具]Pytorch-lightning的使用
  • 互联网摸鱼日报(2023-05-09)
  • MySQL常见的存储引擎
  • 迅为i.MX6ULL开发板生成 KEY 文件,并安装
  • 常见舆情监测系统的分类和特点
  • 联合群美叶彦文:坚持,只要有一口气,能坚持多久,就坚持多久
  • 动态规划的学习
  • 计算机网络:HTTPS
  • 数据库系列-什么是 JDBC?它的作用是什么?
  • C++学习day--08 数组和字符串
  • 系统分析师之系统测试与维护(十六)
  • 板材激光切割机切割穿孔时注意的几个问题
  • 奶爸式Swagger教学
  • 入门级的家用洗地机怎么样?入门级洗地机推荐
  • 【面试】Java 反射机制(常见面试题)
  • JavaScript最佳实践
  • 景23转债,海能转债上市价格预测
  • TDengine 部署与使用----时序数据库
  • ShardingSphere系列四(Sharding-JDBC内核原理及核心源码解析)
  • 【2023】华为OD机试真题全语言-题目0234-字符串重新排列
  • Springboot +Flowable,三种常见网关的使用(排他、并行、包容网关)(一)
  • 软考高项(一)信息化发展 ★重点集萃★
  • 大项目准备(2)
  • 计算机网络【2】 子网掩码
  • linux发行家族和发行版及安装软件方式