java内部类和异常类的概念
1、内部类的外嵌类的成员变量在内部类中任然有效,内部类中的方法也可以调用外嵌类中的 方法,内部类中不可以声明类的变量和方法,外嵌的类体可以用内部类声明对象,作为外嵌类的成员。内部类仅供他的外嵌类使用。
package com.Example1;
public class Example7_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
RedCowForm form = new RedCowForm("jjf");
form.showMessage();
form.cow.speak();
}
}
class RedCowForm {
static String formName;
RedCow cow;
RedCowForm() {
}
RedCowForm(String s) {
cow = new RedCow(12, 12, 12);
formName = s;
}
public void showMessage() {
cow.speak();
}
class RedCow {
String cowName = "Red";
int height, weight, price;
RedCow(int h, int w, int p) {
this.height = h;
this.weight = w;
this.price = p;
}
void speak() {
System.out.println("****" + cowName + "###" + height + "###" + formName + "" + weight);
}
}
}
2、匿名类的概念
匿名类可以继承父类的方法也可以重写父类的方法,使用匿名可以直接用匿名类创建对象,因此匿名类一定是内部类,匿名类可以访问外嵌类中的成变量和方法,匿名类体重不可以声明static成员变量和static方法。由于匿名类是一个子类,没有类名,匿名类创建对象的时候要直直接使用父类的构造方法。
package com.Example1;
public class Example7_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ShowBoad board = new ShowBoad();
board.showMessage(new outputEnglish());
board.showMessage(new OutputAlphabet() {
public void output() {
for (char c = 'a'; c < 'w'; c++)
System.out.printf("%3c", c);
}
});
}
}
abstract class OutputAlphabet {
public abstract void output();
}
class outputEnglish extends OutputAlphabet {
@Override
public void output() {
for (char c = 'a'; c < 'z'; c++) {
System.out.printf("%3c", c);
}
}
}
class ShowBoad {
void showMessage(OutputAlphabet show) {
show.output();
}
}
4、和接口有关的匿名类
package com.Example1;
interface SpeakHelloMan {
void speak();
}
class HelloMeachine {
public void turnOn(SpeakHelloMan hello) {
hello.speak();
}
}
public class Example7_7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HelloMeachine machine = new HelloMeachine();
machine.turnOn(new SpeakHelloMan() {
public void speak() {
System.out.println("hello you are welcome");
}
});
machine.turnOn(new SpeakHelloMan() {
public void speak() {
System.out.println("欢迎光临");
}
});
}
}
5、异常类的概念
异常类处理会改变程序的控制流程,让程序有机对错误做出处理,java使用throw关键字抛出一个Exception子类的实例表示异常发生。使用try -catch语句操作异常语句
package com.Example1;
public class Example7_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 0, m = 0, t = 100;
try {
m = Integer.parseInt("232342");
n = Integer.parseInt("787676");
t = Integer.parseInt("2402321");
} catch (NumberFormatException e) {
System.out.println("发生异常" + e.getMessage());
}
System.out.println(m + " " + n + " " + t);
try {
System.out.println("抛出异常");
throw new java.io.IOException("异常");
} catch (java.io.IOException e) {
System.out.println("eccor error" + e.getMessage());
}
}
}
6、自定义异常类的概念
在写程序的时候可以扩展Exception类定义自己的异常类,一个方法在声明的同时可以使用关键字throw抛出干个异常,并在方法的方法体中给出异常的操作,即用响应的异常类创建对象,并使用throw关键字抛出异常的对象,导致该异常结束。
package com.Example1;
public class Example7_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Bank bank = new Bank();
try {
bank.income(200, -22);
bank.income(452, -222);
bank.income(200, -600);
System.out.println(bank.getMoney());
bank.income(9999, -666);
} catch (BankException e) {
System.out.println("出现问题");
System.out.println(e.warnMess());
}
}
}
class BankException extends Exception {
String message;
public BankException(int m, int n) {
message = "in" + m + "out" + n;
}
public String warnMess() {
return message;
}
}
class Bank {
private int money;
public void income(int in, int out) throws BankException {
if (in <= 0 || out >= 0 || in + out <= 0) {
throw new BankException(in, out);
}
int netIncome = in + out;
System.out.println(" " + netIncome);
}
public int getMoney() {
return money;
}
}
7、断言处理概念
断言语句:程序不准备通过捕获异常来处理错误,直接暂停。 assert BooleanException:message
java内部类和异常类的概念的更多相关文章
- Java基础知识笔记第七章:内部类和异常类
内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...
- Core Java 总结(异常类问题)
所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 下面的代码输出结果是多少?为什么?并由 ...
- java内部类以及匿名类
内部类 一个类内部定义的类称为内部类. 内部类允许把逻辑相关的类组织在一起,并控制内部代码的可视性. 内部类与外部类的结构层次如下. 顶层类:最外层的类 外部类:内部类所在的类 内部类:类内部定义的类 ...
- 一文简述JAVA内部类和异常
内部类和异常 内部类 在一个类的内部定义的一个类,例如,A类中定义了一个B类,则B类相对于A类就是内部类,而A类相对于B类就是外部类 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类 pub ...
- java中的异常类
Java中的异常: 1. Throwable是所有异常的根,java.lang.Throwable Throwable包含了错误(Error)和异常(Exception),Exception又包含了运 ...
- Java学习(异常类)
一.什么是异常: 异常就是在运行时产生的问题.通常用Exception描述. 在java中,把异常封装成了一个类,当出现问题时,就会创建异常类对象并抛出异常相关的信息(如详细信息,名称以及异常所处的位 ...
- Java学习(异常类练习题)
练习题: 1.计算圆的面积,半径不能为零和负数 package com.oracle.Demo01; public class Demo02 { // 写一个计算圆的面积的方法,传一个半径,返回面积 ...
- JAVA中常见异常类
1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...
- Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...
随机推荐
- 开源RPC Jupiter
ref https://github.com/fengjiachun/doc/tree/master/netty https://budairenqin.iteye.com/ https://blog ...
- 使用 JavaScript 将网站后台的数据变化实时更新到前端
问:难道只能设置定时器每隔一秒通过 Ajax 向后台请求数据来实现吗? 答: 1. nodejs的 http://socket.io 支持上述 李宏训 所说的三种方式,另外还支持 Flash Sock ...
- MySQL触发器trigger的使用
https://www.cnblogs.com/geaozhang/p/6819648.html 触发器的触发 语句的错误 和 触发器里面 错误 都不会运行 NEW与OLD详解 MySQL 中定义了 ...
- Python学习笔记-数字类型
如何定义一个数字类型 定义var1为一个INT类型,所以在5/3 输出的是 1. var1 = 5 var1=var1/3 print var1 定义var1为一个INT类型,因为var1是INT类型 ...
- 为什么要重写equals和hashcode方法
equals hashcode 当新建一个java类时,需要重写equals和hashcode方法,大家都知道!但是,为什么要重写呢? 需要保证对象调用equals方法为true时,hashcode ...
- 记录一下putty的pscp的用法【转】
转自 记录一下putty的pscp的用法 - 刘荣星的博客 https://www.liurongxing.com/how-use-the-putty-and-pscp.html 以前一直用Secu ...
- 在windows下用vagrant建立lnmp开发环境
1.安装vagrant,vitrualbox 2.下载homestead的box包,并添加到vagrant 下载地址: https://atlas.hashicorp.com/laravel/boxe ...
- linux学习之硬盘的存储原理和内部架构
原文地址:https://blog.csdn.net/tanggao1314/article/details/52074735 首先,让我们看一下硬盘的发展史: 1956年9月13日,IBM的IBM ...
- hibernate框架学习之对象状态
lHibernate对象共有三种状态 •瞬时状态:瞬时对象 •持久化状态:持久化对象 •托管状态:托管对象 l瞬时对象(Transient Object),简称TO l瞬时对象指的是应用程序创建出来的 ...
- Delta DVP 系列 PLC 各装置 Modbus 地址
此Modbus地址表以 1 为基础地址 Device Range Type DVP address (Hex) Modbus address (Dec) Effective ES/EX/SS SA/S ...