总结1
Java文件的两种形式
-
.java 文件 即Java源文件,在Java开发平台上编写
-
.class文件 即Java字节码文件,经过源文件编译后的可以执行的文件
java编译阶段:javac.exe将 .java 源文件编译成.class字节码文件。此字节码文件不属于二进制文件,操作系统不能直接执行
Java运行阶段:java.exe启动classLoader类装载器,在硬盘中查找字节码文件,将其交给JVM之后,JVM将这些字节码文件翻译成二进制代码,交给操作系统处理,从而实现java语言程序的功能。
-
注意:一个源文件可以编译生成多个字节码文件,运行阶段只需要字节码文件的参与,源文件可以删除,但不建议这么做,由于可能需要修改源文件的代码重新生成字节码文件。
编译(源文件):javac x.java
运行(字节码文件):java x
类与类之间的六种关系
1.继承关系:(A is B) 类与类之间,接口与接口之间的继承关系,只能是单继承。关键字:extends
2.实现关系:(A like B,C,D...)类与接口之间的关系,可以是多实现。关键字:implements
3.关联关系:(A has B) 类与类之间的包含关系,即A类中有B的引用,但是是单向的,B中没有A的引用。
4.聚合关系:一种特殊的关联关系,指的是整体与部分之间的关系,整体与部分可分离,可以有各自的生命周期。类似公司与员工之间的关系
5.组合关系:一种特殊的关联关系,指的是整体与部分之间的关系,整体与部分之间不可分离,整体的生命周期结束也意味着部分的生命周期也结束,例如人与人的大脑,人与人的四肢等
6.依赖关系:通常指的是类与局部变量之间的关系。A类中的某个方法中有B类型的局部变量,方法结束,局部变量所占空间也被释放。此关系即为依赖关系
关于Java中的接口
Java引入接口的目的:
接口类似于Java语言三大特性中的多态,有利于降低子程序的耦合度,增强其可扩展性。
package com.anyan.day01;
//接口的定义:【修饰符列表】 interface 接口名{}
public interface Inter01 {
//接口中的常量被public static final修饰,且修饰符可以省略
public static final double PI=3.14159265;
int i=10;
//接口中的抽象方法没有方法体,且public abstract 可以省略
public abstract void mth01();
}
//接口默认都是公共的。public可以省略
interface Inter02{
void mth02();
}
//接口支持多继承
interface Inter03 extends Inter01,Inter02{
void mth03();
}
class A{
}
class B{
}
class C extends A{
}
//一个类只能继承一个父类,却可以实现多个接口,这是接口扩展性强的原因
class D implements Inter02,Inter03{
//一个类实现接口中的方法的时候,需要重写接口中所有的抽象方法,包括所实现的接口的父类中的方法
public void mth01(){
}
public void mth02(){
}
public void mth03(){
}
//接口中的常量可以随意被调用
double d=PI;
}
class E{
//未实现接口的类也可以通过接口调用其中的常量
double d1=Inter01.PI;
// Inter02.mth02();//未实现接口的类不可以调用接口中的方法
}
/*关于接口的知识点总结:
*
* 1.何为接口?
* 接口是一种特殊的抽象类,其成员包含常量和方法,
* 将想要实现功能,行为动作等放入接口当中,解决了继承的缺陷,即父子类耦合度过高,导致子类的可扩展性极大降低
*2.接口中需注意的事项:
* 所有的接口都是抽象的,包括其中的常量和方法
* 抽象常量中的public static final 可以省略
* 抽象方法中的publc abstract 可以省略
* 接口是多继承的,类是单继承的
* 所有实现了某个接口的类都必须重写实现的接口中的所有方法,而包括该接口的父类
* 接口中没有构造方法,是完全抽象的,因此无法被实例化,要想实现里面的方法只能采用类实现接口的方式
* 接口中的常量可以在任何位置被直接访问,方法则不行。
* 少面向对象编程,多面向抽象编程。其中面向抽下编程的思想其实就是面向接口编程。
* */