内部类

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类(内部类、匿名内部类、异常、自定义异常)的更多相关文章

  1. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

  2. java内部类和异常类的概念

    1.内部类的外嵌类的成员变量在内部类中任然有效,内部类中的方法也可以调用外嵌类中的 方法,内部类中不可以声明类的变量和方法,外嵌的类体可以用内部类声明对象,作为外嵌类的成员.内部类仅供他的外嵌类使用. ...

  3. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

  4. Java基础---多态、内部类、异常、包

    第一讲     多态 多态可以理解为事物存在的多种体现形态. 例:动物中猫,狗.猫这个对象对应的类型是猫类型,如:猫 x = new猫(); 同时猫也是动物中的一种,也可以把猫称为动物.动物  y = ...

  5. Java 多态、内部类、异常、包

    一.多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态. 例如: 动物中的猫和狗. 猫这个对象对应的是猫类型,例如:猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为 ...

  6. 一文简述JAVA内部类和异常

    内部类和异常 内部类 在一个类的内部定义的一个类,例如,A类中定义了一个B类,则B类相对于A类就是内部类,而A类相对于B类就是外部类 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类 pub ...

  7. Java学习笔记:内部类/匿名内部类的全面介绍

    编写java程序时,一般一个类(或者接口)都是放在一个独立的java文件中,并且类名同文件名(如果类是public的,类名必须与文件名一致:非public得,无强制要求).如果想把多个java类放在一 ...

  8. Java面向对象 Object类 内部类

     Java面向对象 Object类    内部类 知识概要:                 一:Object类                 二:内部类 匿名内部类的写法 1.Object O ...

  9. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字

    Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...

随机推荐

  1. LINQ标准查询运算符的执行方式-即时

    即时,声明查询的位置立即执行.查询返回如果是不可以枚举的的结果,都会立即执行. 执行方式为“”即时”的查询运算符有下面这些. Aggregate 应用累计器函数和结果选择器,返回传入泛型类型TSour ...

  2. redis 5.0.7 源码阅读——双向链表

    redis中双向链表相关的文件为:adlist.h与adlist.c 一.数据结构 redis里定义的双向链表,与普通双向链表大致相同 单个节点: typedef struct listNode { ...

  3. 【57】目标检测之Anchor Boxes

    Anchor Boxes 到目前为止,对象检测中存在的一个问题是每个格子只能检测出一个对象,如果你想让一个格子检测出多个对象,你可以这么做,就是使用anchor box这个概念. 我们还是先吃一颗栗子 ...

  4. MySQL安装详细步骤(附迅雷下载链接)

    环境:windows10.64bit.mysql 8.0.19 迅雷下载链接8.0版本 https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-in ...

  5. 纪中23日c组T3 2161. 【2017.7.11普及】围攻 斐波那契数列

    2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto Prob ...

  6. 通俗易懂的RESTful API实践详解(含代码)

    来源:点击进入 点击上方链接,版面更好 一.什么是RESTful REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露,URI 的设计只要负责把资源通过合理方式暴露出来就可以了,对 ...

  7. L001.PyQt

    초보자를 위한 Python GUI 프로그래밍 - PyQt5 https://wikidocs.net/book/2944 https://freeprog.tistory.com/330?cat ...

  8. Wannafly Winter Camp 2020 Day 6J K重排列 - dp

    求 \(K\) 是多少个 \(n\) 元置换的周期.\(T\leq 100, n\leq 50, K \leq 10^{18}\) Solution 置换可以被试做若干个环组成的有向图,于是考虑 dp ...

  9. PS_0002:改变曲线,改变色阶

    1,ctrl + m  改变曲线 2,ctrl + l  改变色阶

  10. matlab逐行读取text文件,编写函数提取需要的文字

    在数学建模中遇到的数据比较难处理,而且给的是text格式,自己想了好长时间才编出来,现在分享一下,可以交流学习 目标的text文件是 只提取里面的数据 需要自编函数 clc,clear path='D ...