提示:以下是本篇文章正文内容,下面案例可供参考
public abstract class Vehicle{
public abstract double calaFuelEfficiency(); //计算燃料效率的抽象方法
public abstract double clacTripDistance(); //计算行驶距离的抽象方法
}
public class Truck extends Vehicle{
public double calaFuelEfficiency(){
//写出计算卡车的燃料效率的具体方法
}
public double clacTripDistance(){
//写出计算卡车行驶距离的具体方法
}
}
public class RiverBarge extends Vehicle{
public double calaFuelEfficiency(){
//写出计算卡车的燃料效率的具体方法
}
public double clacTripDistance(){
//写出计算卡车行驶距离的具体方法
}
}
1.接口使用上也满足多态性
2.接口,实际上就是定义了一种规范
3.开发中,体会面向接口编程!
public clas USBTest{
main(){
Computer com = new Computer();
//1.创建了接口的非匿名实现类的非匿名对象
Flash flash = new Flash();
com.transferData(falsh);
//2.创建了接口的非匿名实现类的匿名对象
com.transferData(new Printer());
//3.创建了接口的匿名实现类的非匿名对象
USB phone = new USB(){
public void start(){
sysout("手机开始工作");
}
public void stop(){
sysout("手机结束工作");
}
};
com.transferData(phone);
//4.创建了接口的匿名实现类的匿名对象
com.transferData(new USB(){
public void start(){
sysout("mp3开始工作");
}
public void stop(){
sysout("mp3结束工作");
}
});
}
}
class Computer{
public void transferData(USB usb) { //USB usb = new Flash();
usb.start();
sysout("具体传输数据的细节");
usb.stop();
}
}
interface USB{
//常量,定义了长、宽、最大最小的传输速度等。
void start();
void stop();
}
class Flash implements USB{
public void start(){
sysout("U盘开启工作");
}
@Override
public void stop() {
System.out.println("U盘结束工作");
}
}
class Printer implements USB{
public void start(){
sysout("打印机开启工作");
}
@Override
public void stop() {
System.out.println("打印机结束工作");
}
}
1.finally是可选的
2.finally中声明的是一定会被执行的代码。即使catch中又出现异常了,try中有return语句,catch中有return语句等情况。
3.像数据库连接、输入输出流、网络编程Socket等资源JVM是不能自动的回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。
代码如下(示例):
public void test1() {
try {
int a = 10;
int b = 0;
System.out.println(a/b);
}catch (ArithmeticException e) {
//e.printStackTrace();
int [] arr = new int[10];
System.out.println(arr[10]);
}catch(Exception e) {
e.printStackTrace();
}
//System.out.println("我好美呀哈哈哈~~~");
finally {
System.out.println("我好美呀哈哈哈~~~");
}
}
public void test2() {
FileInputStream fis = null;
try {
File file = new File("hello.txt");
fis = new FileInputStream(file);
int data = fis.read();
while(data != -1) {
System.out.println((char)data);
data = fis.read();
}
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(fis != null)
fis.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
@Test
public void testMethod() {
int num = method();
System.out.println(num);
}
public int method() {
try {
int [] arr = new int[10];
System.out.println(arr[10]);
return 1;
}catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();
return 2;
}finally {
System.out.println("我一定会被执行");
}
}
/**
* @author YML
* 异常处理的方式二:throws + 异常类型
* 1. "throws +异常类型"
*/
public class ExpectionTest2 {
public static void main(String[] args) {
try {
method2();
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
public static void method3() {
try {
method2();
}catch(IOException e) {
e.printStackTrace();
}
}
public static void method2() throws FileNotFoundException,IOException
{
method1();
}
public static void method1() throws FileNotFoundException,IOException{
File file = new File("hello.txt");
FileInputStream fis = new FileInputStream(file);
int data = fis.read();
while(data != -1) {
System.out.println((char)data);
data = fis.read();
}
fis.close();
}
}