网页无法调用java9_JAVA 9 (内部类,异常,包)
内部类:
将一个类定义在另一个类里面,称里面那个类为内部类。
举例:
class Zx
{
public static void main(String []arr)
{
Outer o = new Outer();
o.method();
}
}
class Outer
{
class Inner //内部类,可以定义多个内部类
{
void function()
{
System.out.println("inner:"+x);
}
}
int x=3;
void method()
{
System.out.println(x);
Inner in = new Inner();
in.function();
}
}
直接访问内部类中的成员:
可以在main()中 写 Outer.inner in = new Outer().new Inner(); //内部类可以被私有化,外部类不能,私有化之后不可以这样写了。
内部类访问规则
1,内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式为:外部类.this.变量名。
2,外部类要访问内部类必须建立内部类对象。
访问格式:
1,当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。
可以直接建立内部类对象 ,
格式 Outer.inner in = new Outer().new Inner();
2,当内部类在成员位置上,就可以被成员修饰符修饰。
比如,private:将内部类在外部类中进行封装
static:内部类就具备了静态的特性。//无法访问非静态变量,只能访问外部类中的静态成员,优先于对象存在。
内部类定义原则
当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物在使用外部事物的内容。
class Body
{
private class XinZang
{
}
public void show()
{
new XinZang();
}
}
定义在方法内部的内部类,即不是成员位置
1,不可以被静态和私有修饰,仍然可以访问外部类成员变量,因为还持有外部类中的引用
class Zx
{
public static void main(String []arr)
{
new Outer().method();
}
}
class Outer
{
int x=3;
void method()
{
class Inner//不可以被静态和私有修饰,仍然可以访问外部类成员变量
{
void function()
{
System.out.println(x);
}
}
new Inner().function();
}
}
2,但是不可访问他所在的局部变量,只能访问被final修饰的局部不看了,如method中 int个y,不可与访问y
匿名内部类
1,其实是内部类简写格式。
2,定义匿名内部类的前提
内部类必须是继承一个类或者实现接口。
3,匿名内部类格式: new 父类或者接口()
{
定义子类的内容
}
4,其实匿名内部类就是一个匿名子类对象,而且对象有点胖,带内容的对象。
5,匿名内部类中定义的方法最好不要超过三个。
举例
原来:
class Zx
{
public static void main(String []arr)
{
new Outer().function();
}
}
abstract class A
{
abstract void show();
}
class Outer
{
int x=3;
class Inner extends A
{
void show()
{
System.out.println("show"+x);
}
}
public void function()
{
new Inner().show();
}
}
修改匿名后:
class Zx
{
public static void main(String []arr)
{
new Outer().function();
}
}
abstract class A
{
abstract void show();
}
class Outer
{
int x=3;
public void function()
{
new A() //A 的匿名子类对象
{
void show()
{
System.out.println("show"+x);
}
}.show();
}
}
匿名内部类练习
class Zx
{
public static void main(String []arr)
{
Test.function().method();//补全代码,运行正常
}
}
interface Inter
{
void method();
}
class Test
{
/*
static Inter function()
{
return new Inter()
{
public void method()
{
System.out.println("111");
}
} ;
}
*/
}
异常
异常:程序运行时出现不正常情况。
异常由来:问题时java对问题进行描述,封装成对象。
对于严重的:java通过Error类进行描述。
对于Error,一般不编写针对性的代码进行处理
对于非常严重的:java通过Exception类进行描述。
对于Exception可以提供针对性代码进行处理
Throwable //父类
异常处理:
javc提供可特特有语句进行处理,格式:
try
{
需要被检测的代码
}
catch(异常类 变量)
{
处理方式
}
finally
{
一定会执行的语句
}
throws Exception //抛出问题
多异常处理
多个catch(x e)即可,x为exception的子类
并且应当把父类放在最后,以方便前面能够精确识别异常种类
catch(Exception e)
{
}
自定义异常:
将特有的问题,java没有封装的异常,进行自定义。
一般情况下,函数内部出现异常,要么在函数内部进行
try
{
}
catch()
{
}
要么在函数头throws 异常。
例如当除数是负数时,视为异常情况。
class Zx
{
public static void main(String []arr) throws Fushu \\!!
{
System.out.print(new Demo().div(3, 44));
}
}
class Fushu extends Exception
{
private String msg;
void Fushu(String msg)
{
this.msg=msg;
}
public String getMessage()
{
return msg;
}
}
class Demo
{
int div(int a,int b) throws Fushu
{
if (b<0)
throw new Fushu("出现了负数的情况");//手动通过throw抛出异常对象 //!!自定义异常
return a/b;
}
}
包
原来对类文件进行管理
可以有多层包目录
package org.crazyit.net;把类存放在该文件中 org.crazyit.net
不同包中的类互相访问。
被访问的包中的类以及类中的成员,需要public修饰
不同包中的子类还可以直接访问父类中被protected修饰的成员
包与包直接权限只有两种,public protected,默认
权限区分。
public
portected
default(默认)
private
同一个类中
ok
ok
ok
ok
同一个包中
ok
ok
ok
子类
ok
ok
不同包中
ok
一个java文件中只能产生一个public类
package.类名=新类名
不同包中的类也可继承,创建对象等等
package zxzx; //在这个包中
public class Zx { //class必须得是public 才能被外部访问
public void show()
{
System.out.println("show ran"); //函数必须得是public 才能被外部访问
}
}
public class ArrayTool
{
private ArrayTool (){}
public static void main(String [] arr)
{
zxzx.Zx a = new zxzx.Zx(); //package.类名 为新类名
a.show();
}
}
import
为了简化类名的属性
zxzx.Zx a = new zxzx.Zx(); //package.类名 为新类名
improt zxzx.Zx;将包zxzx中的Zx 导入
可以在该类中直接写Zx a = new Zx(); 了
也可以写
improt zxzx.*;导入zxzx包中的所有 类。
网页无法调用java9_JAVA 9 (内部类,异常,包)相关推荐
- 网页怎么调用云服务器资源,网页怎么调用云服务器资源
网页怎么调用云服务器资源 内容精选 换一换 普通的按需实例(不含本地盘.FPGA卡).竞价模式的竞价计费实例(不含本地盘.FPGA卡),关机后,基础资源(vCPU.内存.镜像)不再计费,绑定的云硬盘( ...
- Vue以CDN方式调用Swiper轮播异常
Vue以CDN方式调用Swiper轮播异常 参考文章: (1)Vue以CDN方式调用Swiper轮播异常 (2)https://www.cnblogs.com/Tylerrrkd/p/9165886. ...
- 关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序。
关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. 参考文章: (1)关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. (2)https://www. ...
- c#调用excel报错 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))问题的解决
c#调用excel报错 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))问题的解决 参考文章: (1)c#调用excel报错 (异常来自 HRESULT:0x ...
- 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”
使用"1"个参数调用"DownloadString"时发生异常:"操作超时" 参考文章: (1)使用"1"个参数调用&q ...
- WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。...
引发的异常:"System.Windows.Markup.XamlParseException"(位于 PresentationFramework.dll 中)其他信息: &quo ...
- 在网页中调用本地的应用程序
在网页中调用本地的应用程序 例子: <script> function exec (command) { window.oldOnError = window.onerror; ...
- java构造函数内部调用_具有内部类构造函数参数的Java Reflection奇数
java构造函数内部调用 关于Java内部类 Java允许成员类(在其他类内定义的类),局部类(在语句块内定义的类)和匿名类(无名称的类): class Outer {Object anonymous ...
- 企业微信H5_网页jssdk调用 agentconfig选人选照片等案例演示
文章目录 一.验证域名归属校验 1. 阅读文档 2. 配置公网域名 3. 登录企业微信管控台 4. 选择自建应用 5. 网页授权及JS-SDK 6. 填写公网域名 7.下载校验文件 8. 校验文件移动 ...
最新文章
- Error:Execution failed for task ':app:clean'.
- jmp、JE、JZ、JNE、JNT指令
- 136.只出现一次的数字
- 射击比赛(java)
- MEF入门之不求甚解,但力求简单能讲明白(四)
- linux java 多线程_Java多线程:Linux多路复用,Java NIO与Netty简述
- 数据库变为可疑_数据库显示可疑的修复方法
- 计算机网络原理(04741)第1章:计算机网络概述
- echart 圆饼图 显示单位_ajax请求echarts圆饼图动态显示数据方法
- linux下桌面编程软件,慧编程桌面端下载|慧编程桌面版 V1.2.0 Linux版 下载_当下软件园_软件下载...
- zblog自动采集伪原创发布
- 轻量型目标检测算法一次看个够
- chrome浏览器的跨域问题解决
- 阿朱:研发管理者必读文章
- java中输出值保留四位小数_JAVA基础笔记(1)
- 华为程序员频交 Linux 内核补丁遭质疑,管理员后续回应:承认贡献,但请不要琐碎提交
- 关于python语言和人工智能以下哪个说法不正确_民用建筑包括()和()。
- redis6.2.6版本配置详解
- electron主进程和渲染进程的通讯
- JQuery判断字符串是否是数字
热门文章
- @Transactional 事务失效记录
- 解决Vue3创建项目后的Error: Cannot find module ‘vue-loader-v16/package.json‘问题
- jquery标题左右移动动画
- linux-centos7 常用的基本命令--文件内容查看、硬链接和软链接
- pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字...
- e盾网络验证源码_Laravel [mews/captcha] 图片验证码
- c++如何显示图片_Vue+laravel后端添加商品后图片如何显示?
- java jtable不可编辑_java – 使JTable单元不可编辑
- html5在线api,HTML5+ API Reference
- BugkuCTF-MISC题好多数值