云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > java知识体系 - 图文

java知识体系 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 6:34:06

2.1.4 总结

封装可以隐藏实现细节,使得代码模块化。 继承可以扩展已存在的代码模块(类)。 封装和继承属于代码重用。 多态是为了接口重用。

2.1.5 继承、聚合、组合、关联的区别

继承很好理解,下图表示(实线):

实现也很好理解,下图表示(虚线):

依赖(代码中通常表示的是局部变量、方法参数、返回值),下图表示:

关联(代码中通常表示的类的属性),下图表示:

聚合(关联的一种,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;has-a,空心菱形),下图表示

组合(关联的一种,表示更强的关系,整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,contains-a,实心菱形),下图表示

2.2 抽象、接口定义及区别

抽象类里面可以有非抽象方法

但接口里只能有抽象方法

声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

2.3 匿名类、内部类、匿名内部类

在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 。 内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。

内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。

我们为什么使用内部类?

A、在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。

B、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置。

C、内部类的更多用法(匿名inner class实现一个接口,不过切记最后那个分号;实现继承和接口实现时出现同名方法的问题;实现多重继承的功能)

2.4 反射

这种动态的获取信息及动态调用方法的机制在Java中称为“反射”(reflection)。

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。

在JDK中,主要由以下类来实现Java反射机制,这些类都位于

java.lang.reflect包中:

Class类:代表一个类;

Field 类:代表类的成员变量(成员变量也称为类的属性); Method类:代表类的方法;

Constructor 类:代表类的构造方法;

Array类:提供了动态创建数组,以及访问数组的元素的静态方法;

在java.lang.Object 类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型。Class类是Reflection API 中的核心类,它有以下方法:

getName():获得类的完整名字;

getFields():获得类的public类型的属性(包括继承的类的public属性); getDeclaredFields():获得类的所有属性;

getMethods():获得类的public类型的方法; (包括继承的类的public方法); getDeclaredMethods():获得类的所有方法;

getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型; getConstructors():获得类的public类型的构造方法;

getConstructor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型;

newInstance():通过类的不带参数的构造方法创建这个类的一个对象; 通过默认构造方法创建一个新对象:

Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});

以上代码先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认的构造方法,然后调用Constructor对象的newInstance()方法构造一个实例。

获得对象的所有属性:

Field fields[]=classType.getDeclaredFields();

Class 类的getDeclaredFields()方法返回类的所有属性,包括public、protected、默认和private访问级别的属性。

Java允许我们从多种途径为一个class生成对应的Class object (一)运用getClass()方法

(二)运用Class.getSuperclass()方法

(三)运用静态方法Class.forName(),这个最常用 (四)运用.class语法

(五)运用原始包装类的TYPE方法

2.5 浅复制和深复制

浅负责也叫浅克隆,深复制也叫深克隆。

克隆一般通过实现Cloneable中的clone方法来实现浅克隆和深克隆,但是

搜索更多关于: java知识体系 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

2.1.4 总结 封装可以隐藏实现细节,使得代码模块化。 继承可以扩展已存在的代码模块(类)。 封装和继承属于代码重用。 多态是为了接口重用。 2.1.5 继承、聚合、组合、关联的区别 继承很好理解,下图表示(实线): 实现也很好理解,下图表示(虚线): 依赖(代码中通常表示的是局部变量、方法参数、返回值),下图表示: 关联(代码中通常表示的类的属性),下图表示: 聚合(关联的一种,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;has-a,空心菱形),下图表示 组合(

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com