java程序设计-期末大作业(参考菜鸟教程)

1、类

类:类是一个模板,它描述一类对象的行为和状态。
比如:一个圆形类,描述着某一类的对象,将圆形的行为和状态封装在类中。
我们可以将一类圆形公共的特征都封装在圆形类中,比如,圆都有半径,有圆心,我们称这些状态为类的属性,而行为通过方法来体现,比如要获得圆的半径和周长。

一个类可以包含以下类型变量:

局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

声明:声明一个对象,包括对象名称和对象类型。
实例化:使用关键字 new 来创建一个对象。
初始化:使用 new 创建对象时,会调用构造方法初始化对象。

2、继承

继承的概念

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

比如动物类是父类,而食草动物和食肉动物是它的子类

所以继承需要符合的关系是:is-a,父类更通用,子类更具体。
比如食草动物是一个动物,食肉动物是一个动物,符合这种is-a的关系
虽然都属于动物,但是子类与父类还是不同的,子类有他特定的方法和属性。
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的

我们为什么需要继承?

代码重复
代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错)

继承类型

在这里插入图片描述
继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

implements关键字

使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

super 与 this 关键字

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this关键字:指向自己的引用。

final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

3、多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:

在这里插入图片描述

多态存在的三个必要条件

继承
重写
父类引用指向子类对象:Parent p = new Child();

在这里插入图片描述## 2、多态的现实中的例子
鸟是一只鸟,猫是一只猫。
同样鸟是一只动物,猫也是一只动物。

3、多态的转型

向上转型和向下转型

4、举例说明

分别创建三个类,一个Animal类、Cat类、Bird类

在这里插入图片描述
在这里animal类为Bird和Cat的父类
Animal类如下
在这里插入图片描述

有私有属性 name和type,方法move
Cat类如下
在这里插入图片描述
Bird如下
在这里插入图片描述

5、多态语法

父类型的变量引用子类型的对象
在上述例子中:
Animal animal1=new Cat(" “,” “);
Animal animal2=new Bird(” “,” ");

6、详解

A、动物类里有的属性以及方法是整个动物大体拥有的,但是子类有一些属性和方法是特有的,这时候怎么办?
比如上面的例子,动物类的move,我们定义父类是输出move,但是鸟类是fly,我们可以通过重写父类中的方法把动物类的move输出“fly”。
在这里插入图片描述
在这里插入图片描述
因此我们在创建了两个动物类型引用猫和鸟对象变量之后,我们的方法输出的是各自重写后的方法。
在这里插入图片描述
多态是向上转型的,将子类对象向上转型成父类型,这个过程不用强制转换。

B、如果我们想猫可以飞,给他添加了一个特有的方法,我们怎么去调用呢?
我们知道如果用父类型去引用子类型变量的话,是无法调用子类型特有的方法的,我们只能通过向下转型来实现。
在这里插入图片描述
只有这样才能调用猫类的fly方法
向下转型必须强制类型转换,并且向下转型是不安全的。

7、总结

面向对象三大特性的多态,总而言之,是将父类型变量引用子类型对象,也是现实事物的一种代码实现。更多地了解现实中的例子能够更好理解多态。

4、Java 集合框架

在这里插入图片描述
接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
在这里插入图片描述

集合接口

集合框架定义了一些接口。本节提供了每个接口的概述:
序号 接口描述

1 Collection 接口

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。

2 List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。

3 Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
Set 接口存储一组唯一,无序的对象。

4 SortedSet
继承于Set保存有序的集合。

5 Map
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

6 Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。

7 SortedMap
继承于 Map,使 Key 保持在升序排列。

8 Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计 Java毕业设计期末作业项目源码课程设计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值