内部类:

将一个类定义在另一个类里面,称里面那个类为内部类。

举例:

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 (内部类,异常,包)相关推荐

  1. 网页怎么调用云服务器资源,网页怎么调用云服务器资源

    网页怎么调用云服务器资源 内容精选 换一换 普通的按需实例(不含本地盘.FPGA卡).竞价模式的竞价计费实例(不含本地盘.FPGA卡),关机后,基础资源(vCPU.内存.镜像)不再计费,绑定的云硬盘( ...

  2. Vue以CDN方式调用Swiper轮播异常

    Vue以CDN方式调用Swiper轮播异常 参考文章: (1)Vue以CDN方式调用Swiper轮播异常 (2)https://www.cnblogs.com/Tylerrrkd/p/9165886. ...

  3. 关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序。

    关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. 参考文章: (1)关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. (2)https://www. ...

  4. c#调用excel报错 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))问题的解决

    c#调用excel报错 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))问题的解决 参考文章: (1)c#调用excel报错 (异常来自 HRESULT:0x ...

  5. 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”

    使用"1"个参数调用"DownloadString"时发生异常:"操作超时" 参考文章: (1)使用"1"个参数调用&q ...

  6. WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。...

    引发的异常:"System.Windows.Markup.XamlParseException"(位于 PresentationFramework.dll 中)其他信息: &quo ...

  7. 在网页中调用本地的应用程序

    在网页中调用本地的应用程序 例子: <script> function exec (command) {     window.oldOnError = window.onerror;   ...

  8. java构造函数内部调用_具有内部类构造函数参数的Java Reflection奇数

    java构造函数内部调用 关于Java内部类 Java允许成员类(在其他类内定义的类),局部类(在语句块内定义的类)和匿名类(无名称的类): class Outer {Object anonymous ...

  9. 企业微信H5_网页jssdk调用 agentconfig选人选照片等案例演示

    文章目录 一.验证域名归属校验 1. 阅读文档 2. 配置公网域名 3. 登录企业微信管控台 4. 选择自建应用 5. 网页授权及JS-SDK 6. 填写公网域名 7.下载校验文件 8. 校验文件移动 ...

最新文章

  1. Error:Execution failed for task ':app:clean'.
  2. jmp、JE、JZ、JNE、JNT指令
  3. 136.只出现一次的数字
  4. 射击比赛(java)
  5. MEF入门之不求甚解,但力求简单能讲明白(四)
  6. linux java 多线程_Java多线程:Linux多路复用,Java NIO与Netty简述
  7. 数据库变为可疑_数据库显示可疑的修复方法
  8. 计算机网络原理(04741)第1章:计算机网络概述
  9. echart 圆饼图 显示单位_ajax请求echarts圆饼图动态显示数据方法
  10. linux下桌面编程软件,慧编程桌面端下载|慧编程桌面版 V1.2.0 Linux版 下载_当下软件园_软件下载...
  11. zblog自动采集伪原创发布
  12. 轻量型目标检测算法一次看个够
  13. chrome浏览器的跨域问题解决
  14. 阿朱:研发管理者必读文章
  15. java中输出值保留四位小数_JAVA基础笔记(1)
  16. 华为程序员频交 Linux 内核补丁遭质疑,管理员后续回应:承认贡献,但请不要琐碎提交
  17. 关于python语言和人工智能以下哪个说法不正确_民用建筑包括()和()。
  18. redis6.2.6版本配置详解
  19. electron主进程和渲染进程的通讯
  20. JQuery判断字符串是否是数字

热门文章

  1. @Transactional 事务失效记录
  2. 解决Vue3创建项目后的Error: Cannot find module ‘vue-loader-v16/package.json‘问题
  3. jquery标题左右移动动画
  4. linux-centos7 常用的基本命令--文件内容查看、硬链接和软链接
  5. pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字...
  6. e盾网络验证源码_Laravel [mews/captcha] 图片验证码
  7. c++如何显示图片_Vue+laravel后端添加商品后图片如何显示?
  8. java jtable不可编辑_java – 使JTable单元不可编辑
  9. html5在线api,HTML5+ API Reference
  10. BugkuCTF-MISC题好多数值