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

news/2025/1/31 5:04:13/

博主:命运之光
专栏: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.ppmy.cn/news/65967.html

相关文章

C++使用中需要避免的10个常见错误

C使用中需要避免的10个常见错误 常见C错误与注意事项一、不使用命名空间二、不正确使用头文件三、没有检查数组越界四、忘记释放动态分配的内存五、不使用const关键字六、指针误用七、类型强制转换错误八、浮点数比较不准确九、忘记判断函数返回值十、不使用引用传参 常见C错误…

rk3568 修改开机logo

rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中,logo 可以帮助用户快速识别应用程序,并与其他应用程序区分开来。在设备中,logo 可以帮助用户识别设备的品牌和型号,以及与…

怎么给pdf文件添加水印

怎么给pdf文件添加水印?PDF文件的应用比较广泛,大家喜欢将各种办公资料和文档转换成PDF格式,为什么呢?因为pdf文件具有比较强的稳定性而且不利于编辑修改,所以更利于保存和转发。有时候我们会在工作中花费大量时间制作…

stream笔记

1、 创建流stream 1.1、 Stream 的操作三个步骤 1.2、 stream中间操作 1.2.1 、 limit、skip、distinct 1.2.2、 map and flatMap 1.2.3、 sort 自然排序和定制排序 1.3、 add and andAll difference: 1.4、 终止操作 1.4.1、 allmatch、anyMatch、noneMatch、max、min…

jenkins,gitlab,实时构建推送

首先jdk,jenkins安装好,新版jenkins不支持jdk8 然后安装环境maven,git 环境配置 插件安装 gitlab插件 Build Authorization Token Root插件 插件环境整好之后新建个任务 源码管理,填入仓库https地址,添加git…

PHPPHPsdkJAVAC#Python 调用1688.item_search_suggest-获得搜索词推荐

选择API接口需要考虑以下因素: 接口的功能:选择能够满足自己需求的接口,比如获得某个特定的数据或执行某个操作。 接口的质量:选择稳定、可靠的API接口,能够确保数据的准确性和可靠性,减少出错和数据丢失…

【设计模式】观察者模式篇

Observer Pattern 1、定义 观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系。当一个对象的状态发生改变时,它的所有依赖对象都会收到通知并自动更新。 在观察者模式中,有两个主要角色:被观察者和观察者。被观察者维…

python中函数与类 类中的方法-静态方法/动态方法

class student():position即令def __init__(self,name,age):self.namenameself.ageagedef eat(self):passclassmethoddef cla(cls):passstaticmethoddef sta():passpassstustudent(name张三,age12) print(stu.position)stu.sta() stu.cla()# 直接使用静态和类方法 student.cla(…