一、JDK和JRE的区别
(1)JDK:Java Development kit,Java开发工具包。它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等;
(2)JRE:Java Runtime Environment,是Java运行时的环境,主要包括虚拟机和Java类库的class文件。
二、java程序编译,解释流程
(1).java文件通过编译(javac xxx.java)生成.class文件;
(2).class文件是字节码文件,是跨平台的。通过java命令启动JVM(java xxx),由JVM来加载.class文件并运行.class文件。
三、Java抽象类和接口的区别
1、接口:接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。即如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,自身不能做任何事情。
2、抽象类:含有abstract修饰符的类。它不能创建实例对象;abstract class类中定义抽象方法必须在具体子类中实现,所以,不能有抽象构造方法或抽象静态方法;如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
注意:
(1)抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类;
(2)二者区别:1、接口中不能有具体的实现,但是抽象类可以;
2、一个类要实现接口,就要实现其里面的所有方法,但是抽象类不需要;
3、通过接口可以实现多继承,但是接口做不到;
4、接口不能有构造方法;
5、实体类与接口之间只有实现关系,实体类与抽象类之间只有继承关系,而抽象类和接口之间既有实现的关系又有继承的关系;
6、接口中的方法都是默认为公开抽象方法,属性都默认为公开静态常量。
使用abstract class的方式定义Demo抽象类的方式如下:
public abstract class Demo{ public abstract void method1(); public abstract void method2(); private String name; … } |
使用interface的方式定义Demo抽象类的方式如下:
public interface Demo{ void method1(); void method2(); … } |
在abstract class方式中,Demo可以有自己的数据成员,也可以有非 abstract的成员方法,而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final 的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的 abstract class。