第二十一篇 java(2)- 集合框架

集合框架

java集合框架包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。

Collection

Collection下包括Set、List、Queue,各自又包含了使用不同方式的实现。

Set

Set下包括TreeSet,HashSet,LinkedHashSet。其中TreeSet基于红黑树实现。

第八篇 java(1)-面向对象

类与对象

类就是用户定义好的原型,可以通过类创建对象,类中定义好了一系列的属性或者是函数。对象是真正的实体。当为一个类创建了对象,也可以说是实例化了这个类,java中有几种创建类的方式。

当只是简单地声明一个类变量时,如Object a,不同于原始变量int、double等声明变量时就分配好了内存,这样的声明方式并没有创建好一个对象,需要通过new关键字来触发类构造器,并为这个对象分配好内存。所有类都至少有一个构造函数,如果没有定义,Java编译器会自动创建一个无参构造函数。这个构造器会调用其父类的无参构造函数。

封装、继承与多态

修饰符

在介绍封装、继承与多态之前,需要先了解java中的修饰符,修饰符有两类:

一类是控制访问权限的,一类是实现其他功能的。控制访问权限的修饰符有

1
2
3
4
5
6
7
8
// 以下为类修饰符
public --任何类均可访问。
default --没有指定修饰符时的默认修饰符,只有同一个包中的类可以访问。
// 以下为属性、方法修饰符
public --任何类均可访问。
private --只有声明的类中可以访问。
protected --只有同一个包中的类和其子类可以访问。
default --没有指定修饰符时的默认修饰符,只有同一个包中的类可以访问。

实现其他功能的修饰符有:

1
2
3
4
5
6
7
8
9
10
// 以下为类修饰符
final --此类不能被其他类继承。
abstract --抽象类,此类不能用来创建对象。
// 以下为属性、方法修饰符
final --属性、方法不能被重载。
static --属性、方法属于类而不是对象。
abstract -- 只能用在抽象类中的方法上。
transient -- 序列化对象时跳过此属性和方法。
synchronized -- 此方法一次只能被一个线程访问。
volatile --此属性的值不是线程内部缓存,而是从主内存中读取。

封装

封装可以将实现细节隐藏起来,其最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

继承

在继承中,先了解两个概念:父类和子类,父类就是被继承的类,子类就是继承其他类的类,在jva中,继承使用extends关键字或implements关键字。java中类的继承是单一继承,一个子类只能拥有一个父类。所有 Java 的类均是由java.lang.Object 类继承而来的。通过使用关键字 extends ,子类可以继承父类的除 private 属性外所有的属性。Implements 关键字在类继承接口的情况下使用,可以多继承接口。

重写(Override)与重载(Overload)

重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。

子类在声明变量时,可以使用父类类型,这是因为在编译阶段,只是检查参数的引用类型,然而在运行时,Java 虚拟机 (JVM) 指定对象的类型并且运行该对象的方法。需要注意的是构造方法不能被重写。需要在子类中调用父类的被重写方法时,要使用 super 关键字。

重载(Overload)

重载 (overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。构造函数是可以重载的。

多态

通过继承、重写、重载可以以多种不同的方式实现某个操作,便可以实现多态。除此之外,java中还有接口和抽象类以实现多态。

接口

接口通常以interface来声明。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。