JAVA类(内部类、匿名内部类、异常、自定义异常)
内部类
package AA;
public class 类 {
int de=;
StringBuffer dee=new StringBuffer();
public class 成员内部类{
public void ff() {
System.out.println("这是成员内部类方法");
}
}
/*
1.可以访问外部类所有的成员,包括被声明为私有(private)的;
2.可以使用任何访问权限修饰符,包括protected和private;
*/
public void ff1() {
int de1=;
class 局部内部类{
public void ff() {
System.out.println("局部内部类方法");
System.out.println(de);
}
}
new 局部内部类().ff();
}
/*
1.不允许使用任何访问权限修饰符;
2.创建局部内部类的对象的语法,必须在声明局部内部类之后;调用只能在该方法里
3.可以访问外部类所有的成员,包括被声明为私有(private)的;
*/
private static class 静态内部类{
public void ff() {
System.out.println("这是静态内部类方法");
}
}
/*
1.只能访问static成员
2.可以使用任何访问权限修饰符,包括protected和private;
3.可以在其它类中直接创建静态内部类的对象,语法格式为:
*/
public void dy() {
new 成员内部类().ff();//调用成员内部类方法
//调用方法二: 类.成员内部类 de=new 类.成员内部类();
new 类().ff1();//调用局部内部类方法
new 静态内部类().ff();//调用静态内部类方法
//调用方法二:类.静态内部类 de=new 静态内部类();
}
public static void main(String[] args) {
new 类().dy();
}
}
参考:
https://www.cnblogs.com/zhncnblogs/p/6222750.htmlhttps://blog.csdn.net/mrbacker/article/details/84500918
匿名内部类
参考:
https://baijiahao.baidu.com/s?id=1600814193634680238&wfr=spider&for=pc
https://www.cnblogs.com/baizhuang/p/11393778.html
抽象类
参考:
https://www.runoob.com/java/java-abstraction.html
异常
先来点基础的:
public class xin {
public static void main(String[] args) {
try{
System.out.println("hhhhh");
int de[]=new int[];
de[]=;
}catch(ArrayIndexOutOfBoundsException fr){
System.out.println("chucuo");
}
}
}
上面代码解释了:一个基本异常的基本格式,try{ } ......catch(){ }
try。。。catch:不需要抛出异常
自定义异常:
package AA;
import java.util.Scanner; class de1 extends Exception{//首先类要继承Exception(就是异常类) public de1(String fr) {
super(fr);
}
} public class de{ public static int fg(int a,int b) throws de1{//声明方法并且抛出异常(throws de1)
Scanner de1=new Scanner(System.in); System.out.println("请输入数值1");
a=de1.nextInt();
System.out.println("请输入数值2");
b=de1.nextInt(); if(a<||b<) {
throw new de1("负数错误");//抛出异常
}
if(a>||b>) {
throw new de1("数大于100错误");
}
return a+b;
}
public static void dayin() {
System.out.println("异常啦");
}
public static void main(String[] args) {
try { fg(,); //调用上面的方法,下面并且打印出结果,打印方法是打印方法的返回值
//这里的数字没多大用处,主要是不出错
//根据上面的方法给出的变量所以这里必须要加
//但是上面有输入流,就直接将这个覆盖了
System.out.println(fg(,)); }catch(de1 e) {//这个是try后面必须接的
//括号里面的是异常类型,e是结果
dayin();
System.out.println(e);
}
}
}
//1,程序通过try走,并且执行fg方法
//2,当用户输入数值时,会进行判断,如果不符合就会抛出异常(这里是抛在de1类里面,关键字:throw new 类名)
//3,try执行已经异常了,所以将会执行catch,而catch可以有多个,那个catch则会判断try异常属于哪一类型的异常
//4,判断完后,将会执行catch里面的语句,用来提示用户
//4的注意:上面的判断下面什么(负数错误)(da数错误),其实是de1类的构造string方法,可以去掉,直接在catch里面加提语句都一样
//列如下面:去掉构造,在catch里面加已是语句 package AA;
import java.util.Scanner; class de1 extends Exception{ } public class de{
static int fg(int a,int b) throws de1{//声明抛出异常(throws de1) Scanner de1=new Scanner(System.in); System.out.println("请输入数值1");
a=de1.nextInt();
System.out.println("请输入数值2");
b=de1.nextInt(); if(a<||b<) {
throw new de1();//抛出异常,说白了就是
}
if(a>||b>) {
throw new de1();
}
return a+b;
}
static void dayin() {
System.out.println("异常啦");
}
public static void main(String[] args) {
try { fg(,); //调用上面的方法,下面并且打印出结果,打印方法是打印方法的返回值
//这里的数字没多大用处,主要是不出错
//根据上面的方法给出的变量所以这里必须要加
//但是上面有输入流,就直接将这个覆盖了
System.out.println(fg(,)); }catch(de1 e) {//这个是try后面必须接的
//括号里面的是异常类型,e是结果
dayin();
System.out.println("有错误哟!");
System.out.println(e);
}
}
}
结论:
1,首先一个自定义异常的要有一个拋回来的异常类,这个类用于其它类执行的方法时抛出来的异常,就抛在这个类里面
注意:这个类必须是继承Exception(推荐)和RuntimeException
2,然后就可以在‘其他类’里面随意加方法了,
注意:需要抛出异常就必须在方法名后面加throws 类名,格式:方法名 throws 类名(被抛异常类)
3,声明好方法后,就可以了
注意:这里番外哈,1,如果里面有if判断语句,可以在判断下方在加个'异常抛出',格式:throw new 类名(被抛异常类)
2,注意:throw:是放在方法体里面的
throws:是放在方法体上面的(就是方法名上面)
4,接下来就是用try.....catch了。try里面放异常的方法(说白了就是在try里面执行方法体)
catch就是异常类型了,自定义异常,那‘异常类型’肯定就是‘被抛异常类名’
catch语句格式:catch(类名 返回值(结果)),结果随意
这个语句一般放在开始执行程序是调用方法那里
下面再举一个例子:判断输出输入的值是否是负数
package hhh;
public class hh extends Exception{
static int a,c;
static int b=; public static void de(int a1) throws hh{
if(a1<){
throw new hh();
}
a=b*a1*;
System.out.println("输出:"+a);
}
public static void main(String []args){
try{
de(-);
}catch(hh re){
System.out.println("负数无效");
}
}
}
执行结果:抛出异常,执行catch语句
例子二
package AA;
import java.util.InputMismatchException;
import java.util.Scanner; public class 异常 extends Exception{
Scanner de=new Scanner(System.in);
public void ks()throws 异常 {
try {
for(;;) {
System.out.println("请输入数字");
int dee=de.nextInt();
if(dee<)throw new 异常();
System.out.println("正确");
}
} catch(异常 e) {
System.out.println("对不起你输入的有误!!");
new 异常().ks();
}
catch(InputMismatchException ee) {
System.out.println("数字过大或者非数字");
new 异常().ks();
}
}
public static void main(String[] args) throws 异常 {
new 异常().ks();
}
} /*
编写程序:判断用户输入的是否为负数,否则异常
*/
执行结果:

(内部类、匿名类、匿名内部类、抽象类、异常、终态)
JAVA类(内部类、匿名内部类、异常、自定义异常)的更多相关文章
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...
- java内部类和异常类的概念
1.内部类的外嵌类的成员变量在内部类中任然有效,内部类中的方法也可以调用外嵌类中的 方法,内部类中不可以声明类的变量和方法,外嵌的类体可以用内部类声明对象,作为外嵌类的成员.内部类仅供他的外嵌类使用. ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- Java基础---多态、内部类、异常、包
第一讲 多态 多态可以理解为事物存在的多种体现形态. 例:动物中猫,狗.猫这个对象对应的类型是猫类型,如:猫 x = new猫(); 同时猫也是动物中的一种,也可以把猫称为动物.动物 y = ...
- Java 多态、内部类、异常、包
一.多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态. 例如: 动物中的猫和狗. 猫这个对象对应的是猫类型,例如:猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为 ...
- 一文简述JAVA内部类和异常
内部类和异常 内部类 在一个类的内部定义的一个类,例如,A类中定义了一个B类,则B类相对于A类就是内部类,而A类相对于B类就是外部类 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类 pub ...
- Java学习笔记:内部类/匿名内部类的全面介绍
编写java程序时,一般一个类(或者接口)都是放在一个独立的java文件中,并且类名同文件名(如果类是public的,类名必须与文件名一致:非public得,无强制要求).如果想把多个java类放在一 ...
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...
随机推荐
- C# 多线程的阻塞和继续-ManaulResetEvent的使用
在工作中,会遇到需要多线程处理相应的业务需求,最典型的包括Socket的通信. 多线程处理里,就会考虑到,哪个线程先运行,哪个线程后运行的情况. 这里我介绍一下,使用ManualResetEvent类 ...
- 聊聊spring之bean对象的实例化过程
在spring实例化 之前bean对象封装成 beanDefinition 对象 想了解详情的请参考上一篇文章 好了 我们聊聊 Bean 的实例化过程的几个重要角色 BeanDefinitionReg ...
- AndroidStudio报错:GradleSyncIssues-Could not install Gradle distribution from...
场景 在使用Android Studio 新建 App项目后,编译时提示: GradleSyncIssues-Could not install Gradle distribution from... ...
- STM32存储器映射和寄存器映射
存储器映射 对于Cortex-M3来讲,有一块4G大小的存储器空间.存储器映射指的是芯片厂商为这个空间分配地址的操作.这4G空间被均匀地划分为8个大小为512MB的存储块(block),并且每个块都各 ...
- JSP其余内置对象及四大范围对象的使用
一.application String getContextPath():获取虚拟路径String getRealPath():获取虚拟路径对应的绝对路径 实例 application.jsp &l ...
- IIS6的文件解析漏洞
IIS6的默认配置漏洞会把cer.cdx.asa作为asp代码来解析 后缀解析漏洞 /test.asp;.jpg 或者/test.asp:.jpg(此处需抓包修改文件名) IIS6.0 都会把此类后缀 ...
- centos 7.6 docker 安装 nextcloud -使用sqlite数据库
docker search nextcloud docker pull docker.io/nextcloud docker images mkdir /home/nextcloud chmod -R ...
- 【Java】实验代码整理(多线程、自定义异常、界面)
1.界面+文件输入输出流 package finalExam; import java.awt.BorderLayout; import java.awt.Container; import java ...
- libmodbus库linux 嵌入式设备中的使用
libmodbus库的交叉编译:1]到libmodbus官网https://libmodbus.org/download/下载安装包,内部自带configure文件,官网推荐v3.1.6稳定版.另外注 ...
- 安装Nginx到Linux(源码)
运行环境 系统版本:无 软件版本:无 硬件要求:无 安装过程 NGINX官方提供源码包的下载,NGINX有两个版本Mainline(主线)版和Stable(稳定)版.主线版本我们可以理解为是开发版本, ...