java课程分享Java集合类框架的基本接口有哪些

java课程分享Java集合类框架的基本接口有哪些,第1张

在JAVA开发中框架给我们提供了很多方便的接口,但是接口到底是什么呢?在开发中又起到了什么作用呢,这就是java课程今天需要了解的!

一为什么要使用接口

假如有一个需求:要求实现防盗门的功能。门有”开”和”关”的功能,锁有”上锁”和”开锁”的功能。

分析:首先防盗门是一个门,门有开门和关门的功能,还有一把锁,锁有开锁和上锁,按照面向对象的编程的思想,我们会将门和锁都作为一个类而单独存在,但是,不能让防盗门继承自门的同时又继承自锁,防盗门不是锁,不符合继承中isa的关系,在java中支持单继承。那么我们如何来解决这一问题,这时就要用到接口。

二什么是接口

在软件中接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合,但是没有方法的实现,接口其实上也可以看做是一个特殊的抽象类,但是采用和抽象类完全不同的方法来表示,两者的设计理念也是不同的,抽象类有利于代码复用,接口利于代码的扩展和维护。

三抽象类和接口的区别:

01抽象类可以提供成员方法的实现细节,而接口中只能存在publicabstract方法;

02抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstaticfinal类型的;

03接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

04一个类只能继承一个抽象类,而一个类却可以实现多个接口。

所谓多态,是把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,但子类实例的本身类型没有改变;如:

A x = new B();

这里虽然是声明了一个 A 类型变量,但 x 的值仍然是指向一个B类型,也就是说xsave()是直接调用 B 类对象的save方法,并没有通过其他方式,它本身就是B类型对象,你可以打印信息 println(xgetClass()) ,它输出的是 B 类而不是 A 类。

Class中有个方法 public native boolean isAssignableFrom(Class<> cls)用来判断子类是否继承于父类的或者父接口的。

你会这样子写:

Class clazz = ;

clazzisAssignableFrom(子类名称);返回true说明是挂号里的类的父类或父接口。

clazzisAssignableFrom(子类名称)里的子类名称跟版本有关,好像是15以上的JDK这里的子类名称都是使用的泛型编程。即传的传数是

class<T> 类型的,你用的时候自己斟酌下版本问题。

而常用的instanceof(class )是指该实例是否属于挂号中的类的父类的一个实例。

如上面的例子:

class A{

}

public class B extends A{

public static void main(String[] args){

Class clazz = Bclass;

Class class1 = Aclass;

Systemoutprintln(class1isAssignableFrom(clazz));

if(class1isAssignableFrom(clazz)){

Systemoutprintln("A是B的父类");

}else{

Systemoutprintln("A不是B的父类");

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1]  。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2]  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3]  。

JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一些Java工具和Java的核心类库(Java API)。不论什么Java应用服务器实质都是内置了某个版本的JDK。主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如,IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK[13]  。

另外,可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(JAVA Runtime Environment),JRE是支持Java程序运行的标准环境[14]  。

JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。但由于JDK包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可[15]  。

abstract

class和interface是Java语言中对于抽象类定义进行支持的两种机制。它们之间区别:

接口是公开的,里面不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的;

代码演示:

接口A

public

interface

A

{

public

abstract

void

play()

;

public

abstract

void

beFriendly();

}

接口B

public

interface

B

{

public

abstract

void

play()

;

public

abstract

void

beFriendly();

}

一个类实现多个接口@Service("weixinPay")

public

class

WeixinPay

implements

Pay{

@Overrid

public

Object

pay(Map<String,

Object>

map){

return

"weixinpay";

}

}

接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量;

实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现;

接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现;

接口可以实现多重继承,而一个类只能继承一个超类;

扩展资料:

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。

功能

在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。

接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。

您好,提问者:

    这个是属于向下转型,比如我举个例子:

//这是一个接口

interface Person{

}

class ZhangXin implements Person{

    

}

//转换方式,多态就是父类指向子类的实例

Person p = new ZhangXin();

//转为子类

ZhangXin zx = (ZhangXin)p;

常用接口种类,具体如下。

1javalangString 

String类无可争议的获得冠军,应该没有人会否认这一点,这是一个最终类,用于创建/ *** 作不可变的字符串文字。

2javalangSystem 

System类的使用取决于你工作的项目类型,你可能没有在项目中使用过它,但它仍然是受欢迎的Java类之一,这是一个不能被实例化的工具类。

这个类的主要用途是访问标准输入、输出、环境变量等等。

3javalangException 

Throwable是所有错误和异常的超类,所有异常情况的处理都属于Exception类。

NullPointerException在所有的异常中是最受欢迎的,而Exception异常是在所有异常层次结构的顶部。

4javautilArrayList 

一个实现数组的数据结构的类。这个类实现了List接口,是最受欢迎的Java集合类的成员,Arr

ayList和Vector之间的差异是初学者常见的问题之一,它也经常在java面试中被问到。

5avautilHashMap 

一个实现键值对数据结构的类,这个类实现了Map接口,类似比较ArrayList与Vector,Hash

Map与Hashtable也是经常拿来比较的。

它也是一个受欢迎的集合类,作为一个属性-值的容器,经常用在应用程序多个层之间的数据传递。

6javalangObject 

所有Java类的根类,每一个Java类都是Object类的一个子类,经常使用在平台/框架上。

它包含了一些重要方法,比如:equals,

hashcode,

clone,

toString等等。它自从Java诞生的第一天开始可用。

7javalangThread 

线程是一个单一执行的序列,多个线程可以共同存在,共享资源,我们可以扩展Thread类,并创建自己的线程。

当然,使用Runnable也是另一种选择,是否使用这个类取决于你的应用程序的需要,一个普通的应用程序是完全没有必要使用线程的。

8javalangClass 

Class类是一个直接继承Object类的子类,这个类没有构造函数,它们的对象是被Java虚拟机通过类加载器加载的。

我们大多数人可能没有直接使用过它,但我认为它是一个重要的做反射的类。

9javautilDate 

这是用来处理日期的类,有时候,我们觉得这个类应该加入更多的实用方法,就像每个企业级应用程序都会创建一个日期的实用工具单元。

它自JDK

10开始引入,后来在JDK11中发生巨大变化,弃用了一大堆的方法。

10javautilIterator 

这是一个接口,它很受欢迎,用来替换枚举,这是一个简单易用的单元,它用Iterable同步工作。

Dao是数据访问层,用来保存数据。

Service是业务逻辑处理的。

 我们开发程序的目的是为了完成业务功能, 理想的情况下程序中的每一条语句都应该是与业务直接相关的, 例如程序中不应该出现连接数据库, 读取某个字段等纯技术性的 *** 作, 而应该是得到用户A的基本信息等具有业务含义的 *** 作 dao(data access object)层存在的意义在于将与数据持久化相关的函数调用剥离出去, 提供一个具有业务含义的封装层 原则上说, dao层与utils等帮助类的功能非常类似, 只是更加复杂一些, 需要依赖更多的对象(如DataSource, SessionFactory)等 如果不需要在程序中屏蔽我们对于特定数据持久层技术的依赖, 例如屏蔽对于Hibernate的依赖, 在dao层我们没有必要采用接口设计 一些简单的情况下我们甚至可以取消整个dao层, 而直接调用封装好的一些通用dao *** 作函数, 或者调用通用的EntityDao类等

    程序开发的过程应该是从业务对象层开始的, 并逐步将纯技术性的函数调用剥离到外部的帮助类中, 同时我们会逐渐发现一些业务 *** 作的特定组合也具有明确的含义, 为了调用的方便, 我们会把它们逐步补充到service层中 在一般的应用中, 业务逻辑很难稳定到可以抽象出接口的地步, 即一个service接口不会对应于两个不同的实现, 在这种情况下使用接口往往也是没有必要的

    

    在使用spring的情况下原则上应该避免使用getBean的调用方式, 应该尽量通过注入来获得依赖对象, 但有时我们难免需要直接获取业务对象, 在不使用接口的情况下可以采用如下方式

    class TaskService{

        public static TaskService getInstance(){

            return (TaskService)BeanLoadergetBean(TaskServiceclass);

        }

    }

    在程序中我们可以直接使用TaskServicegetInstance()来得到TaskService对象通过命名规范的约定, 我们可以从类名推导出spring配置文件中的对象名, 因而不需要使用一个额外的硬编码字符串名

以上就是关于java课程分享Java集合类框架的基本接口有哪些全部的内容,包括:java课程分享Java集合类框架的基本接口有哪些、java怎么根据接口找到所有的实现类、java如何判断一个类是否实现了某个接口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9441573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存