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编译之后.都会生 ...
随机推荐
- Linux下使用Nginx
模拟tomcat集群 1.下载tomcat7,/usr/local下新建目录tomcat,将tomcat7剪切到/usr/local/tomcat wget http://mirror.bit.edu ...
- 头部布局,搜索验证和AJAX自动搜索提示,并封装成组件,提高代码复用性
index.html 头部区结构和样式 效果图 静态样式 index.html中的部分 <!-- 头部 --> <div class="header"> & ...
- 虚拟机VMware官网最新版附密钥,kali,ubuntu,centos,deepin迅雷下载地址。
以下全部都是官网的迅雷复制链接 版本都是当前时间可下载的最新版本 VMware官网迅雷下载链接: https://download3.vmware.com/software/wkst/file/VMw ...
- ts中类的方法和抽象类
// 类里面的修饰符 typescript提供三种修饰符 /* public: 公有 在类里面.类外面.子类都可以访问 (默认不加就是public) protected: 保护 在类里面和子类可以访问 ...
- \n不换行
\n在js中表示换行,<br/>在html中表示换行,所以如果在设置innerHtml值时使用 \n ,那么在页面上并不会显示换行,而在设置innerText值时使用 \n 就会显 ...
- 浅谈Javascript中的原型、原型链、继承
构造函数,原型,实例三者的关系 构造函数: 构造函数是创建对象的一种常用方式, 其他创建对象的方式还包括工厂模式, 原型模式, 对象字面量等.我们来看一个简单的构造函数: function Produ ...
- h5 中修改input中 placeholder的颜色
input::-webkit-input-placeholder{ color:blue; } input::-moz-placeholder{ /* Mozilla Firefox 19+ */ c ...
- C#MVC实现为雇员配置角色(完整详细+数据库)
数据库创建“用户表”“角色表”“用户角色关系表” create table roles ( RId int identity, RName varchar(), Remark varchar() ) ...
- android中的常用布局管理器(三)
接上篇博客 (5)TableLayout 表格布局管理器 在android中,线性布局和表格布局用的是最多的. 在很多的输出操作中,往往会使用表格的形式对显示的数据进行排版,tablelayo ...
- 搁置:vue-element-admin
初衷 了解桌面应用类前端搭建的解决方案 -------------------------------------------------------------------------------- ...