java 第三天

h.接口中甚至可以没有任何方法,就是一套标准。

Serializable, Cloneable 

i.接口中可以声明变量,接口中声明的变量都是

public static final 的, 即使没有这样声明

k.接口中有非常多的方法,而我们再用的时候,每次只用个别的方法,非常麻烦

,可以写一个适配器类, 这种缺省适配器类一般都是抽象的,明确指定不需要对象

什么是抽象类: 只要是abstract声明的类就是抽象类

//感觉和C 中的函数声明似的,interface 声明, implements 函数的具体实现

interface TT{   

void a();

void b();

void c();

void d();

}

abstract class TTAdapter implements TT{

public void a() {}

public void b() {}

public void c() {}

public void d() {}

}//这个类没必要有任何对象,所以适配器类可以直接声明成 abstract

class A1 extends TTAdapter{

public void a(){System.out.println("a...");}

}



java的异常 ----------------(不知道怎么用)


1.  什么是异常   你的程序可能出现意外, 内存不够,文件不能打开等  

java中已经把异常or错误都分类了

首先java把错误or异常分成了两大类都是java.lang.Throwable的子类

java.lang.Error 系统级的异常,一般很难调试

java.lang.Excpetion 程序级的异常,通常代码可以处理

2. java.lang.Excpetion 它是一切程序级异常的分类

a. java 中把所有产生的程序级异常都进行了分类,我们程序中出现的任何异常

 都能够在分类中找到

b.Excpetion 大的方向分成两种 :

 b.1 jvm能自动捕获的异常java.lang.RuntimeException及其子类

   当然也可以自己处理

 b.2 jvm 不能捕获的异常必须通过程序自己处理,如果不处理程序编译不通过

3. 如何自己去处理

c中经常这样处理

test(){

openFile();

if(打开成功){

。。。。。

} else {

。。。

}

}

java中处理:

try {

业务代码(可能异常)

}catch(){

异常处理

}

try 可以多个catch:

子类一定要放在父类的前面,因为父类的引用可以引用子类的对象

java.lang.Excpetion 是一切异常的父类,它就可以处理任何异常

不管有没有异常最终都要执行的语句

try{} catch(){} finally{}

try{}finally{}

4.throw/throws 

throw 在某种情况下抛出一个异常,制造一个异常

throws  是用来回避异常的

注意:当子类重写父类方法的时候,不能throws 

比父类多的异常,除非多throws的异常是RuntimeExcept

原理:java中,父类可以接受任何子类对象

如果子类比父类有更多地约束,那么父类处理不了就出问题了,

所以在java中子父类进行继承,子类不能比父类有更多的约束。面向对象的

设计中有一个里氏替换原则说明的就是这个问题。

5.Exception 有几个常用的方法

getMessage() 获取异常的信息

toString()

printStackTrace();

6.自定义异常

自定义 异常需要继承已经提供的异常类

7. 有了异常之后一些细节要注意

如:如果函数有返回值,那么不管有何异常产生都要保证函数有返回值

函数中如下 try{} catch(){}finally{} return 返回值

try{ return..} catch(){return..}finally{}

是finally 先执行还是return 先执行 不管怎么写

函数遇到return就结束, 所以finally一定在return之前执行

阶段性项目:

    目的:1.完成需求

 2.了解简单的面向对象的设计

version1.0  

1.Movie 

属性:name--->电影的名称,priceCode电影的类型

电影类型用整数代替

2.Rental租赁类

属性:movie ,name

3.Customer类

package calculator;

public class Calculate {
	
	public double  add(double a, double b){
		return a + b;	
	}
	
	public double  sub(double a, double b){
		return a - b;	
	}
	
	public double  mul(double a, double b){
		return a * b;	
	}
	
	public double  div(double a, double b){
		return a / b;	
	}
	public double  cal(double num1, double num2 ,String s){
		double result = 0.0;
		if("+".equals(s)){ 
			result = add(num1 ,num2 );
			System.out.println(num1+"+"+num2+"的结果是"+result);
		}else if("-".equals(s)){
			result = sub(num1 ,num2 );
			System.out.println(num1+"-"+num2+"的结果是"+result);
		}else if("*".equals(s)){
			result = mul(num1,num2);
			System.out.println(num1+"*"+num2+"的结果是"+result);
		}else if("/".equals(s)){
			result = div(num1,num2 );
			System.out.println(num1+"/"+num2+"的结果是"+result);
		}else{
		}
		return result;
	}

}

----------------------------
package calculator;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//double result = 0.0;
		double next = 0.0;
		System.out.println("欢迎使用简单计算器...\n  ");
		Calculate cal = new Calculate();  //定义Calculate的一个实例
		System.out.println("请输入第一个数>>>");
		Scanner num = new Scanner(System.in);  
		double a = num.nextDouble();   //获取第一个数
		
		System.out.println("请输入运算符+、-、*、/>>>");
		String s = num.next();   //获取运算符
		System.out.println("请输入下一个数>>>"); 
		double b = num.nextDouble();      //获取第二个数 
		
		double temp = cal.cal(a, b, s);
		
		while(true){
			System.out.println("请继续输入运算符+、-、*、/>>>");
			s = num.next();   //获取运算符
			System.out.println("请输入下一个数");
			next = num.nextDouble();//获取 下一个数			
		    temp = cal.cal(temp, next, s);
		}
		
	}

}


你可能感兴趣的:(java 第三天)