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

简介: Java零基础入门

博主:命运之光
专栏:JAVA入门

JAVA.gif

学习目标

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

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

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

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

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


多 态

多态的体现

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

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

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

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

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

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

多态的优点

可维护性:

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

可扩展性:

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

内 部 类

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

修饰符  class   外部类名称{

修饰符 class 内部类名称{

       ………..

}

………..

}

分类:

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

成员内部类——非静态

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

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

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

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

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

成员内部类——静态

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

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

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

局部内部类

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

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

修饰符  class   外部类名称{

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

class   局部内部类名称{

………..

}

}

}

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

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

匿名内部类

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

格式:

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

//覆写所有抽象方法;

} ;

特点:

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

面向接口编程

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

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

总结

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

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

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

相关文章
|
10天前
|
Java
Java中的抽象类:深入了解抽象类的概念和用法
Java中的抽象类是一种不能实例化的特殊类,常作为其他类的父类模板,定义子类行为和属性。抽象类包含抽象方法(无实现)和非抽象方法。定义抽象类用`abstract`关键字,子类继承并实现抽象方法。抽象类适用于定义通用模板、复用代码和强制子类实现特定方法。优点是提供抽象模板和代码复用,缺点是限制继承灵活性和增加类复杂性。与接口相比,抽象类可包含成员变量和单继承。使用时注意设计合理的抽象类结构,谨慎使用抽象方法,并遵循命名规范。抽象类是提高代码质量的重要工具。
25 1
|
27天前
|
Java
【Java】一个简单的接口例子(帮助理解接口+多态)
【Java】一个简单的接口例子(帮助理解接口+多态)
16 0
|
1月前
|
Java
JAVA接口
JAVA接口
12 0
|
2天前
|
设计模式 Java
Java接口与抽象类
Java接口与抽象类
14 0
|
6天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
25 0
接口之美,内部之妙:深入解析Java的接口与内部类
|
10天前
|
缓存 安全 Java
Java中函数式接口详解
Java 8引入函数式接口,支持函数式编程。这些接口有单一抽象方法,可与Lambda表达式结合,简化代码。常见函数式接口包括:`Function<T, R>`用于转换操作,`Predicate<T>`用于布尔判断,`Consumer<T>`用于消费输入,`Supplier<T>`用于无参生成结果。开发者也可自定义函数式接口。Lambda表达式使实现接口更简洁。注意异常处理和线程安全。函数式接口广泛应用于集合操作、并行编程和事件处理。提升代码可读性和效率,是现代Java开发的重要工具。
21 0
|
10天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
33 0
|
11天前
|
Java
Java中的多线程实现:使用Thread类与Runnable接口
【4月更文挑战第8天】本文将详细介绍Java中实现多线程的两种方法:使用Thread类和实现Runnable接口。我们将通过实例代码展示如何创建和管理线程,以及如何处理线程同步问题。最后,我们将比较这两种方法的优缺点,以帮助读者在实际开发中选择合适的多线程实现方式。
19 4
|
19天前
|
关系型数据库 Java 开发工具
Java入门高频考查基础知识9(15问万字参考答案)
本文探讨了Spring Cloud的工作原理,包括注册中心的心跳机制、服务发现机制,以及Eureka默认的负载均衡策略。同时,概述了Spring Boot中常用的注解及其实现方式,并深入讨论了Spring事务的注解、回滚条件、传播性和隔离级别。文章还介绍了MySQL的存储引擎及其区别,特别关注了InnoDB如何实现MySQL的事务处理。此外,本文还详细探讨了MySQL索引,包括B+树的原理和设计索引的方法。最后,比较了Git和SVN的区别,并介绍了Git命令的底层原理及流程。
29 0
Java入门高频考查基础知识9(15问万字参考答案)
|
19天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
46 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)