java面向对象(九)

文章目录

  • 一、abstract的应用举例
  • 二、接口的使用
    • 1.概念
    • 2.代码案例
  • 三、try-catch-finally使用步骤
    • 1.注意点
    • 2.finally注意点
  • 四、异常处理的方式二:throws + 异常类型
    • 1.如图所示:
    • 2.代码如下:


提示:以下是本篇文章正文内容,下面案例可供参考

一、abstract的应用举例

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.概念

1.接口使用上也满足多态性
2.接口,实际上就是定义了一种规范
3.开发中,体会面向接口编程!

2.代码案例

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("打印机结束工作");
	}

}



三、try-catch-finally使用步骤

1.注意点

  1. finally是可选的。
  2. 使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配
  3. 一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构 (在没有写finally的情况),继读执行其后的代码。
  4. catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓。catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错。
  5. 常用的异常对象处理的方式: @ String getMessage() printStackTrace()
  6. 在try结构中声明的变量,再出了try结构以后,就不能再被调用
    使用try-catch-finally处理编译时异常,使得程序在编译时就不再报错,但是运行时仍可能报错。
    相当于我们使用try-catch-finally将一个编译时可能出现的异常延迟到运行时出现。

2.finally注意点

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("我一定会被执行");
		}
	}
	

四、异常处理的方式二:throws + 异常类型

1.如图所示:

java面向对象(九)_第1张图片

2.代码如下:


/**
 * @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();
	}
}


你可能感兴趣的:(java,开发语言)