接口和抽象类的区别:
- 抽象类可以有方法实现,但是接口不能
- 一个类可以实现(也可以说是继承)多个接口,但是只能继承自一个抽象类
- 接口注重的是功能的定义,抽象类强调的是所属关系
- 接口中的变量默认的是public static final的,并且必须赋初值,也就是不能有自己的私有成员;抽象类在这方面和普通的类差不多,可以有自己的私有成员
接口和抽象类的相同点:
- 都不能被实例化
- 抽象类的子类或者接口的实现类必须实现抽象类或者接口的全部抽象方法
使用javac命令来编译java文件生成.class文件
使用java命令+类名来运行编译好的class文件
假设HelloJava.java代码文件如下
1 2 3 4 5 6 7 8 9 |
public class HelloJava { public HelloJava() { System.out.print("Hello Java!"); } public static void main(String args[]) { HelloJava hellojava = new HelloJava(); } } |
在命令行工具中,cd到HelloJava.java文件所在的目录
运行如下命令:
1 |
javac ./HelloJava.java |
运行完毕后,在目录中会出现HelloJava.class文件
然后使用java命令运行这个类:
1 |
java HelloJava |
此处需要注意的是:
假在com/bcoder/目录下有HelloPackageJava.java文件,文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 |
package com.bcoder; public class HelloPackageJava { public HelloPackageJava() { System.out.print("Java in package!"); } public static void main(String args[]) { HelloPackageJava pkgJava = new HelloPackageJava(); } } |
如需编译HelloPackageJava.java,则cd到com目录的上一层目录,然后执行如下命令:
1 |
javac .\com\bcoder\HelloPackageJava.java |
编译完后使用如下命令运行
1 |
java com.bcoder.HelloPackageJava |
如果在HelloPackageJava.java目录下编译然后运行java HelloPackageJava会报“错误: 找不到或无法加载主类 HelloPackageJava”