第八章
一.JDK.JRE.JVM关系?
JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。
JDK(包括了Java运行环境JRE、Java工具和Java基础类库。)中包含JRE(是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。)和JVM(Java虚拟机),在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
二.Object类。
1.是所以Java的根基类,也就意味着所有的Java对象都拥有Object类的属性和方法。
2.equals
==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。
(比较地址值即是指是否为同一个对象的引用)
equals()是一个方法,只能比较引用数据类型(String)。重写前比较的是地址值,重写后比一般是比较对象的属性。(若想比较新的引用数据类型,需自己重写equals方法)
三.数组
1.什么是数组?
是有序的元素序列,用于储存多个相同类型数据的集合,每个元素通过下标访问。
2.特点
2.1 长度确定,一旦创建,大小不可变。
2.2 元素必须是相同类型
2.3 数据类型可以是任何,包括引用数据类型。
3.数组初始化方式4.数组的遍历
int[] a= {2,4,4,3};
for(int m:a)
System.out.println(m);
5.多维数组
四.抽象类
1.什么是抽象类?
是一个模版模式,为所有子类提供一个通用模版,子类可以在这个模版基础上进行扩展。(避免子类设计的随意性)
public abstract class text {
public abstract void run();//抽象方法
//有抽象方法的类应改为必然是抽象类
//抽象类可以包含属性、方法、构造方法。但构造方法不能用来new实例(即抽象类不能被实例化),只能用来被子类调用
}
2.注意事项:
抽象类不能被实例化(不能用new)
抽象类只能用来继承
抽象类必须被子类实现
一个抽象类可以继承另一个抽象类
五.接口
1.什么是接口?
接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。
接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。
2.格式:
与定义类的class不同,接口定义时需要使用interface关键字。
public interface 接口名 {//可以将接口看做是只包含了功能声明的特殊类。
抽象方法1;
抽象方法2;
}
例子:
public interface MyInterFace {//接口中只有常量,抽象方法。接口默认修饰符:
String MAX_GEEAD=“boss”;
int MAX_GPEAD=120;//所有的接口 的 成员变量默认都是:puiblic static final
public void text01();//所有接口的 方法默认都是:public abstract
public void text02(int a,int b);
}
3. 类实现接口
类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。
其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能。
格式:
class 类 implements 接口 {
重写接口中方法
}
例子:
public class MyClass implements MyInterFace{
@Override
public void text02(int a, int b) {
}
@Override
public void text01() {
}
}
4.接口的多继承?
interface Fu1{
void show();
}
interface Fu2{
void show1();
}
interface Zi extends Fu1,Fu2{
void show3();
}
六.为什么需要接口?接口和抽象类的区别?
相同点:
都位于继承的顶端,用于被其他类实现或继承;
都不能直接实例化对象;
都包含抽象方法,其子类都必须覆写这些抽象方法;
区别:
抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;
一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
抽象类是这个事物中应该具备的内容, 继承体系是一种 is…a关系
接口是这个事物中的额外内容,继承体系是一种 like…a关系
二者的选用:
优先选用接口,尽量少用抽象类;
需要定义子类的行为,又要为子类提供共性功能时才选用抽象类;