Java学习笔记-内部类与异常类

一:内部类

1、定义

Java的类中除了成员变量和方法以外还存在第三种数据类型,就是所谓的内部类。内部类就是在类中在定义一个类,而包含内部类的类被称为外嵌类。

2、内部类与外嵌类的关系

1:内部类的外嵌类的成员变量在内部类中依然有效,内部类中的方法也可以调用外嵌类的方法。‘
2:内部类中不能声明类方法和类变量(关键字static修饰的),内部类声明的对象可以放到外嵌类中,为外嵌类的成员变量。
3:内部类仅供其外嵌类使用,其他类中不能存在其他类的内部类的对象。
4:如果内部类被修饰为static类,那么他就是外嵌类的一种静态数据类型,此时程序就可以在其他类中使用static内部来创造对象了。
【注】非内部类不能是static。

public class RedCowForm{
	static String Formname;
	RedCow cow;   //内部类对象
	RedCowForm(){
	}
	RedCowForm(String s){
		cow=new RedCow(150,112,120);
		Formname=s;
	}
	public void ShowCowMess(){
		cow.speak();
	}
	class RedCow{
		String cowName="红牛";
		int height,weight,price;
		RedCow(int h,int w,int p){
			height=h;
			weight=w;
			price=p;
		}
		void speak(){
			System.out.println("我是"+cowName+",身高"+height+",体重"+weight+"kg,生活在"+formName);
		}
	}
}
public class Test{
	public static void main(String args[]){
		RedCowForm form =new RedCowForm("红牛农场");
		form.showCowMess();
		form.cow.speak();
		}
	}

二:匿名类

1:和子类有关的匿名类

如果一个类没有显示的声明一个子类,但是有又用其子类声明一个对象时,java规定可以用子类的类体来创建一个对象,因为这个类体没有被声明,所以被称为匿名类。
特点:
1:匿名类可以继承父类的方法,并且可以重写父类的方法。
2:匿名类一定是内部类。
3:匿名类可以访问外嵌类的方法和变量,匿名类内部不能声明static的变量和方法。
4:匿名类是一个子类,且没有类名,所以使用匿名类创建一个对象时,调用的是其父类的构造方法。

2:和接口有关的匿名类

Java中放一个接口名后跟着一个类体时(实现了computer接口类去掉类声明后的部分),我们可以将其看做时匿名类。
例如:

new Computer{       //computer是一个接口,这个类体实现了改接口。
}; 

【注】
1:这个匿名类实现了改接口。
2:如果某个方法的参数时接口类型,就可以使用接口名和类体创建一个匿名对象用来传递方法的参数。但是需要重写接口内的所有方法。

3:异常类

所谓的异常类就是指用来处理程序在运行过程中出现的异常情况。一般有关键字throw抛出一个Exception子类的实例表示异常发生。

1:try-catch语句

此语句用来处理异常情况。将可能出现的异常操作放在try部分。一旦出现异常,try就会立刻停止执行,转而执行catch部分(可以有几个部分)
例如:

try{
//包含肯会发现异常的语句
}
catch(ExpectionSubClass1 e){
...
}
catch(ExpectionSubClass2 e){
...
}

2:自定义的异常类

在编写程序时可以自己定义Expection类的子类,根据实际情况来规定那些方法可以解决这样的异常。一个方法在声明时可以使用关键字throw来声明要产生的若干异常。

4:断言

断言语句是Java语言中用来调试程序的一种语句。它可以保留在源代码中。由关键字assert来声明。
断言语句有两种格式:

assert booleanExpression;
assert booleanExpression:messageExpression

例如:

assert num>3 
//如果表达式结果为true则继续执行,否则停止。

启动和关闭断言语句语句,Java默认时关闭断言语句的,当需要开启时可以通过

java -ea mainClass

来开启。

5:总结

1:Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为外嵌类。
2:和某类有关的匿名类是该类的一个子类,该子类没有明显的用类声明来定义。
3;和某接口有关的匿名类就是实现的该接口的类,
4:Java的异常可以出现在方法的调用过程中,即在方法的调用过程中抛出异常现象,导致程序运行出现异常,并且等待处理。Java使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch的try部分,try部分出现异常后,try部分立刻终止运行,执行catch部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值