内部类

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. 【Go语言系列】2.3、Go语言基本程序结构:变量及常量

    1.什么变量 变量来源于数学,从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间. 1.1变量声明 Go 语言变 ...

  2. CSS中的vertical-align属性

    1,vertical-align属性的作用? 设置元素垂直对齐的方式: 2,该属性使用过程的注意点: 与text-align属性不同,text-align属性是设置给需要对齐元素的父元素的, 而ver ...

  3. Hash存储模型、B-Tree存储模型、LSM存储模型介绍

    每一种数据存储系统,对应有一种存储模型,或者叫存储引擎.我们今天要介绍的是三种比较流行的存储模型,分别是: Hash存储模型 B-Tree存储模型 LSM存储模型 不同存储模型的应用情况 1.Hash ...

  4. 【HDU - 1087 】Super Jumping! Jumping! Jumping! (简单dp)

    Super Jumping! Jumping! Jumping! 搬中文ing Descriptions: wsw成功的在zzq的帮助下获得了与小姐姐约会的机会,同时也不用担心wls会发现了,可是如何 ...

  5. 【转载】sql-builder介绍

    原文链接:sql-builder介绍 关于sql-builder sql-builder尝试使用java对象,通过类SQL的拼接方式,动态快速的生成SQL.它可作为稍后的开源项目ibit-mybati ...

  6. [Python之路] bisect模块

    bisect模块 bisect是Python提供的二分查找模块 源码如下: """Bisection algorithms.""" def ...

  7. 安装Nginx到Linux(源码)

    运行环境 系统版本:无 软件版本:无 硬件要求:无 安装过程 NGINX官方提供源码包的下载,NGINX有两个版本Mainline(主线)版和Stable(稳定)版.主线版本我们可以理解为是开发版本, ...

  8. opencv —— saturate_cast 溢出保护

    src.at<uchar>(i,j)[0] = saturate_cast<uchar>(data); if (data < 0) data = 0; else if ( ...

  9. maven的核心概念——继承

    15.1 为什么需要继承机制 由于非compile范围的依赖信息是不能在“依赖链”中传递的,所以有需要的工程只能单独配置.例如: Hello <dependency> <groupI ...

  10. 【pycharm基本操作】项目创建、切换、运行、字体颜色设置,常见包的安装步骤

    创建新项目 退出项目 怎样区别虚拟环境和系统环境? 虚拟环境和系统环境切换:进入项目切换解释器 切换项目 创建python目录和文件 代码运行方式一: 还可以这样执行代码方式二: 文件的剪切.复制.删 ...