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编译之后.都会生 ...
随机推荐
- LINQ标准查询运算符的执行方式-即时
即时,声明查询的位置立即执行.查询返回如果是不可以枚举的的结果,都会立即执行. 执行方式为“”即时”的查询运算符有下面这些. Aggregate 应用累计器函数和结果选择器,返回传入泛型类型TSour ...
- redis 5.0.7 源码阅读——双向链表
redis中双向链表相关的文件为:adlist.h与adlist.c 一.数据结构 redis里定义的双向链表,与普通双向链表大致相同 单个节点: typedef struct listNode { ...
- 【57】目标检测之Anchor Boxes
Anchor Boxes 到目前为止,对象检测中存在的一个问题是每个格子只能检测出一个对象,如果你想让一个格子检测出多个对象,你可以这么做,就是使用anchor box这个概念. 我们还是先吃一颗栗子 ...
- MySQL安装详细步骤(附迅雷下载链接)
环境:windows10.64bit.mysql 8.0.19 迅雷下载链接8.0版本 https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-in ...
- 纪中23日c组T3 2161. 【2017.7.11普及】围攻 斐波那契数列
2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Prob ...
- 通俗易懂的RESTful API实践详解(含代码)
来源:点击进入 点击上方链接,版面更好 一.什么是RESTful REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露,URI 的设计只要负责把资源通过合理方式暴露出来就可以了,对 ...
- L001.PyQt
초보자를 위한 Python GUI 프로그래밍 - PyQt5 https://wikidocs.net/book/2944 https://freeprog.tistory.com/330?cat ...
- Wannafly Winter Camp 2020 Day 6J K重排列 - dp
求 \(K\) 是多少个 \(n\) 元置换的周期.\(T\leq 100, n\leq 50, K \leq 10^{18}\) Solution 置换可以被试做若干个环组成的有向图,于是考虑 dp ...
- PS_0002:改变曲线,改变色阶
1,ctrl + m 改变曲线 2,ctrl + l 改变色阶
- matlab逐行读取text文件,编写函数提取需要的文字
在数学建模中遇到的数据比较难处理,而且给的是text格式,自己想了好长时间才编出来,现在分享一下,可以交流学习 目标的text文件是 只提取里面的数据 需要自编函数 clc,clear path='D ...