现在的位置: 首页 > 综合 > 正文

java学习笔记(4)

2018年01月11日 ⁄ 综合 ⁄ 共 1885字 ⁄ 字号 评论关闭

主要内容:Java中内部类的理解、运用与掌握,Java中的异常处理。

内部类:在一个类中定义另外一个类,这个类就叫做内部类或内置类。内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类来控制内部类的可见性。当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this 引用形成的,使得内部类对象可以随意的访问外部类中所有的成员。

class Outer
{
	private int index=100;
	class Inner
	{
		private int index=50;
		void print()
		{
			int index=30;
			System.out.println(index );
			System.out.println(this.index);
			System.out.println(Outer.this.index);
		}
	}
	void print()
	{
		Inner inner=new Inner();
		inner.print();
	}
}
class Test
{
	public static void main(String[] args)
	{
		Outer outer=new Outer();
		outer.print();
	}
	
}

当将inner放在方法中使用时,只能在方法中使用 也可以在各种语句中使用,不管嵌套的多深,都可以随意的访问外部类的所有成员。

当我们在方法中的类访问方法中的局部变量时,必须将局部变量申明为final

为什么我们要定义内部类:1、在内部类中,可以随意的访问外部类的成员,这可以让我们更好的组织管理我们的代码,增强代码的可读性。

2、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好的定位与接口关联的方法在代码中的位置。

3、内部类的更多用法。

class A
{
	void fn1()
	{
		
	}
}
abstract class B
{
	abstract void fn2()
}
class C extends A
{
	B getB()
	{
		return new B()
		{
			public void fn2()
			{
			}
		};
	}
}
class Test
{
	static void method1(A a)
	{
		a.fn1();
	}
	static void method2(B b)
	{
		b.fn2();
	}
	public static void main(String[] args)
	{
		C c=new C();
		method1(c);
		method2(c.getB());
	}
}

java中的异常处理

1.除数为0;

class Excep
{
	public int division(int a,int b) throws Exception//抛给上级
	{
		return a/b;
	}
	public int fn1(int a,int b) throws Exception
	{
		return division(a,b);
	}
}
class ExcepTest
{
	public static void main(String[] args) throws Exception
	{
		Excep excep=new Excep();
	//	try
		//{
			excep.fn1(5,0);
			System.out.println("exception");
		/*}
		catch(ArithmeticException e)
		{
			System.out.println("can't divide by zero");
			//System.out.println(e.getMessage());
			//System.out.println(e.toString());
			e.printStackTrace();
		}
		System.out.println("finish");*/
	}
}

采用异常类表示异常,不同的类来表示异常类。 所有的异常类都有一个基类
java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行时系统,这个过程称为throw异常。

当java运行时系统接受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常。如果java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的java程序也将退出。

try/catch/finally 语句 抛出的异常和捕获的异常要一致。finally语句无论异常都要执行。

如果父类中的方法抛出多个异常,则子类中的覆盖方法要么抛出相同的异常,要么抛出异常的子类,但不能抛出新的异常(注:构造方法除外)

我们可以在方法声明时,声明一个不会抛出的异常,java编译器就会强迫方法的使用者对异常进行处理。这种方式通常应用与abstract base class和interface中。

抱歉!评论已关闭.