Java核心概念解析:方法重写与重载、final关键字、多态性、单例设计模式、抽象类与接口、访问控制及包管理

更新:11-21 民间故事 我要投稿 纠错 投诉

大家好,Java核心概念解析:方法重写与重载、final关键字、多态性、单例设计模式、抽象类与接口、访问控制及包管理相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Java核心概念解析:方法重写与重载、final关键字、多态性、单例设计模式、抽象类与接口、访问控制及包管理和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

子类中出现与父类中相同的方法声明,也称为方法重写、方法重写。

方法重载概述

该类中出现的方法具有相同的名称,但参数列表不同。与返回值无关。

使用特点:

如果方法名不同,则调用对应的方法

如果方法名相同,最终将使用子类自己的方法。

方法重写的应用:

当子类需要父类的功能,并且功能主体子类有自己独特的内容时,可以重写父类中的方法。这样既继承了父类的功能,又定义了子类特有的内容。

方法重写的注意事项

A: 父类中的私有方法不能被重写(因为子类根本无法继承父类的私有方法)

B: 子类重写父类方法时(访问权限不能低,最好保持一致)

C: 父类静态方法,子类也必须通过静态方法重写

当子类重写父类方法时,最好将其声明为完全相同。

方法重写和方法重载有什么区别?方法重载可以改变返回值类型吗?

方法重写:在子类中,出现与父类中相同的方法声明。方法重载:在同一个类中,方法名称看似相同,但参数列表不同。方法重载可以改变返回值类型,因为它与返回值类型无关。

final关键字

在Java中声明类、属性、方法时,可以使用关键字final来修饰,意思是“最终的”。最后一个关键字是修饰符。

修改类,类不能被继承

通过修改变量,变量就变成常量并且只能被赋值一次。

修改方法,方法不能被覆盖

.final在继承中是如何体现的?

因为继承方法中存在一种现象:方法重写。因此,父类的功能会被子类覆盖。有时候,为了防止子类重写父类的功能,只能由他自己使用。因此,针对这种情况,Java提供了一个关键字:final。

例子

多态

可以理解为一种事物的多种表现形式

重载以前的方法和重写方法也是多态的一种形式。

子类对象的多态性(可以直接应用于抽象类和接口,下面会讲到)

在Java中,可以使用子类的对象来代替父类的对象。

我们在以后的学习中会经常和多态打交道,比如:IO、集合、JDBC等。

使用前提条件

继承并实现(接口)

子类需要重写父类的方法,使得子类有不同的方法实现。

对象多态格式

将父类类型的引用指向子类的对象:向上转型(upcasting)

左边看=,是对父类的引用

右边看=,是子类的对象

向上转型

将子类引用的对象转换为父类类型称为向上转型。通俗地说,就是将子类对象转换为父类对象。这里的父类对象可以是一个接口

虚方法调用

子类的对象实体是通过父类的引用来指向的。当方法被调用时,实际执行的是子类重写父类的方法。

注意

对象的多态性不适用于子类对象的新方法

子类对象的多态性不适用于属性

子类对象的多态性不适用于静态方法

向上转型和向下转型

向上转型:将子类引用的对象转换为父类类型称为向上转型。通俗地说,就是将子类对象转换为父类对象。这里的父类对象可以是一个接口

向下转型:将父类引用的对象转换为子类类型称为向下转型

向上转型和向下转型多态性的优点

可以增强程序的可扩展性和可维护性,使代码更加简洁。

不仅可以减少编码工作量,还可以大大提高程序的可维护性和可扩展性。

单例模式

类的对象只有一个实例

如何设计

如果我们想让一个类在虚拟机中只产生一个对象,首先要将该类的构造函数的访问权限设置为private

不能使用new运算符在类之外直接生成类的对象。

调用类的静态方法之一以返回在类中创建的对象

静态方法只能访问类中的静态成员变量,因此类内部生成的指向类对象的变量也必须定义为静态

分类

线程安全

惰性、非线程安全

抽象类abstract

抽象类是非特定类

当使用abstract关键字修饰一个类时,该类就称为抽象类。同样,当使用abstract关键字修饰一个方法时,该方法就称为抽象方法。

抽象类和抽象方法必须用abstract关键字修饰

格式

抽象类类名{}

公共抽象无效吃();

抽象类不一定有抽象方法。具有抽象方法的类一定是抽象类。

抽象类不能被实例化

因为它不是具体的。

那么,如何实例化抽象类呢?

以多态的方式,它由特定的子类实例化。其实这也是一种类型多态,抽象类多态。

抽象类的子类

如果不想重写抽象方法,则子类就是抽象类。

重写所有抽象方法。这时,子类就是一个具体类。

例子

抽象类——注:

抽象类有构造函数(所有类都有构造函数)

抽象方法所在的类必须是抽象类

抽象类中不能有抽象方法

不能使用抽象来修改属性、私有方法、构造函数、静态方法和最终方法。

抽象类VS 通用类:

相似点:

抽象类和通用类都是用来描述事物的,并且都有内部定义的成员。

不同的:

一般类有足够的信息来描述事物;抽象类可能没有足够的信息来描述事物。

通用类可以被实例化。抽象类不能被实例化。

一般类中不能定义抽象方法,只能定义非抽象方法。抽象类中可以定义抽象方法,也可以定义非抽象方法。

抽象方法——注:

抽象方法必须是public或者protected(因为如果是private的话,就不能被子类继承,子类也不能实现该方法)。默认是公开的。

抽象方法只保留方法的功能,具体的执行交给继承抽象类的子类,子类重写这个抽象方法。

如果一个子类继承了一个抽象类并重写了所有抽象方法,那么这个类就是一个“实体类”并且可以被实例化。

如果一个子类继承了一个抽象类,并且没有重写所有抽象方法,也就是说这个类中还存在抽象方法,那么这个类就必须声明为抽象的!

接口

示例接口是抽象方法和常量值的定义的集合

本质上,接口是一种特殊的抽象类,它只包含常量和方法的定义,而不包含变量和方法的实现。

为什么要有接口?

Java不支持多重继承

在Java中要定义类,请使用关键字class,要定义接口,请使用关键字interface。

格式:

接口接口A{ }

如何实现接口

在Java中,关键字extends用于继承类,关键字implements用于实现接口。

类子类实现InterfaceA{ }

类之间有继承关系,类与接口之间有实现关系。

使用关键字implements实现接口,然后重写接口中定义的抽象方法

接口详情

接口可以被认为是一个特殊的抽象类。它是常量和抽象方法的集合。它不能包含变量或通用方法。

接口中的所有成员变量默认都是public static final(固定)修饰的。

接口中的所有方法默认都被publicabstract修饰(固定)。

从以上两点可以看出:接口中的成员具有公共权限

接口没有构造函数,无法实例化。

接口定义了一个函数。该功能可以通过类来实现。

实现接口的类必须重写所有抽象方法才能实例化。

如果一个实现接口的类没有重写所有抽象方法,那么这个类仍然是抽象类。

一个类可以实现多个接口(用逗号分隔)。 java中的类继承是单继承

一个类在继承另一个类的同时还可以实现多个接口。

与继承类似,接口和实现类之间也存在多态性

接口VS 抽象类的区别

相似点:

接口和抽象类都不能被实例化。只能由其他类实现和继承。

接口和抽象类都可以包含抽象方法。实现接口和抽象类的类必须实现这些抽象方法,否则实现的类就是抽象类。

差异:

抽象类和接口的定义不同:抽象类、接口interface

接口只能包含抽象方法,不能包含实现方法;抽象类可以包含普通方法。

接口中不能定义静态方法;静态方法可以在抽象类中定义

接口中只能定义静态常量属性,不能定义普通属性;普通属性和静态常量都可以在抽象类中定义。

该接口不包含构造函数;抽象类可以包含构造函数。抽象类中的构造函数并不是用来创建对象的,而是允许其子类调用这些构造函数来完成属于抽象类的初始化操作。

接口不包含初始化块,但抽象类可以包含初始化块

一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口。通过实现多个接口,可以弥补Java中单一继承的缺点。

注意

接口之间存在继承关系,使用extends关键字,接口可以继承多个接口InterfaceA extends InterfaceB { }

在开发中,类不应该继承已经实现的类。它应该继承一个抽象类或实现一个接口。

总结

通过接口,可以实现不相关的类的相同行为,而无需考虑这些类之间的层次关系。

接口可以指定多个类需要实现的方法,一般用于定义对象的扩展功能。

接口主要用于定义规范。解耦关系。

权限修饰符

修饰符:

权限修饰符:私有、默认、受保护、公共

状态修饰符:static、final

抽象修饰语:抽象

种类:

权限修饰符:默认修饰符,public

状态修正:最终

抽象修饰语:抽象

最常用的是:public

成员变量:

权限修饰符:私有、默认、受保护、公共

状态修饰符:static、final

最常用的是:private

施工方法:

权限修饰符:私有、默认、受保护、公共

最常用的是:public

会员方法:

权限修饰符:私有、默认、受保护、公共

状态修饰符:static、final

抽象修饰语:抽象

最常用的是:public

其他组合规则:

成员变量:

公共静态最终

会员方法:

公共静态

公共摘要

公开决赛

包是Java提供的一种区分类的命名空间的机制。它是一种组织类以及相关类和接口集合的方式。它提供了访问权限和命名的管理机制。

打包申请

1. 报关包

添加:源文件开头的package包名(需全部小写,防域名系统)

IDE下声明包的两种方式

通过创建包,您可以声明该包,然后在该包下创建一个类。

创建类时指定包

理解:

包在文件中的表示形式是文件夹目录结构,功能相似的类放在同一个目录下。

类被打包,允许相同的类名存在于不同的包中

2. 使用包

如果当前类想使用其他包中的类,则需要使用import关键字导入。

例如:导入java.util.Scanner;

如果需要使用某个包的多个类,可以使用"*"来替换所有类

示例:导入java.util.*;

套餐摘要

将功能相似的类放在同一个包中,以便于查找和使用。

由于同名的类可以存在于不同的包中,因此使用包可以在一定程度上避免命名冲突。

用户评论

£烟消云散

终于到Java基础五了!感觉越来越接近理解这个语言的核心概念了。

    有14位网友表示赞同!

单身i

重载、多态这些东西一直有点印象模糊,这篇文章应该能让我理清思路!

    有17位网友表示赞同!

墨染天下

final关键字真是个很用处的工具,以后要用得更多~

    有20位网友表示赞同!

半梦半醒i

学习单例模式感觉很有挑战性,希望能理解这个模式是如何保证只创建一份实例的。

    有5位网友表示赞同!

你tm的滚

抽象类和接口都是用来描述代码结构的核心概念,这篇文章应该能让我更清晰地认识到他们的作用。

    有14位网友表示赞同!

景忧丶枫涩帘淞幕雨

权限修饰符是Java中非常重要的概念,一定要掌握这些关键词!

    有15位网友表示赞同!

执拗旧人

包的概念一直不太明白,希望这篇帖子可以解释清楚,方便我更好的组织代码!

    有12位网友表示赞同!

殃樾晨

终于有机会深入学习一下Java高级的那些概念了!

    有11位网友表示赞同!

凝残月

希望能详细讲解重写和重载的区别,还有多态的多种实现方式。

    有10位网友表示赞同!

把孤独喂饱

单例模式应用场景很多,这篇帖子能让我更好地理解它的实战意义。

    有11位网友表示赞同!

可儿

抽象类和接口之间的区别一直令我困惑,希望这篇文章能够帮我弄明白。

    有20位网友表示赞同!

愁杀

Java 的包管理机制太重要了!一定要好好学习!

    有7位网友表示赞同!

盲从于你

多态让我感觉这个语言非常灵活,期待深入学习它的应用技巧.

    有11位网友表示赞同!

幸好是你

final关键字的使用场景真的很多,“只读”的特点让人感觉很有用。

    有9位网友表示赞同!

烟花巷陌

这段时间一直在练习Java,希望这篇帖子能够帮我巩固基础知识!

    有19位网友表示赞同!

炙年

学习了这些高级概念,我就能写出更优雅、更高效的Java代码!

    有15位网友表示赞同!

罪歌

感谢分享这么宝贵的Java学习资源!让我可以尽快掌握这些核心概念。

    有14位网友表示赞同!

算了吧

感觉自己离成为一名合格的java程序员越来越近啦!

    有6位网友表示赞同!

心已麻木i

这些基础知识可是学习更高级Java架构的基础!一定要牢记

    有7位网友表示赞同!

【Java核心概念解析:方法重写与重载、final关键字、多态性、单例设计模式、抽象类与接口、访问控制及包管理】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:揭秘生活困境:如何摆脱负能量,拥抱积极人生 下一篇:iPhone尺寸全面汇总:涵盖iPhone 16系列尺寸信息