Java之内部类、包及代码块
个人通俗理解:
1、内部类:有点类似于写在父类中的子类,根据位置不一样为不同的名字,和相应的访问方式不同;不过要访问外部类的话,需要充分运用好this(本类)的这个关键字;要是需要快速的创建子类对象的话,可以用到匿名内部类。
2、包:其实就是个放类的文件夹,当需要用的别的包里的类的时候,则需要导包。不过存在四种不同的修饰符,则对应四种访问权限(default只是理论上的,实际上是不需要写的,直接默认了)
3、代码块:按优先级的话,静态代码块的肯定在第一次使用的时候就执行这唯一的一次了,一般都是用在初始化的时候。定义在类中成员位置的构造代码块也是在创建对象的时候优于构造方法执行一次。而局部代码块则是定义在方法中的,它不能被外界访问的,但可以在其内部访问外界的。(存在即是合理的,先理解下)
一、内部类:
1、概念:
定义在其他类的内部的类就叫内部类,其他的类被称为外部类。在内部类中可以直接访问外部类的所有成员。
2、分类:
成员内部类、局部内部类。
3、成员内部类:
成员内部类,定义在外部类中的成员位置。
class 外部类 {
修饰符 class 内部类 {
//其他代码
}
}
访问方式:
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
4、局部内部类:
局部内部类,定义在外部类方法中的局部位置。
class 外部类 {
修饰符 返回值类型 方法名(参数) {
class 内部类 {
//其他代码
}
}
}
访问方式:
在外部类方法中,创建内部类对象,进行访问
class Party {//外部类,聚会
public void puffBall(){// 吹气球方法
class Ball {// 内部类,气球
public void puff(){
System.out.println("气球膨胀了");
}
}
//创建内部类对象,调用puff方法
new Ball().puff();
}
}
public static void main(String[] args) {
//创建外部类对象
Party p = new Party();
//调用外部类中的puffBall方法
p.puffBall();
}
5、匿名内部类:
定义的匿名内部类有两个含义:
①、 临时定义某一指定类型的子类;
②、 定义后即刻创建刚刚定义的这个子类的对象;
作用:
匿名内部类是创建某个类型子类对象的快捷方式。
new 父类或接口(){
//进行方法重写
};
二、包:
1、概念:
java的包,其实就是我们电脑系统中的文件夹,包里存放的是类文件。
2、声明:
package 包名.包名.包名…;
3、访问:
包名.包名….类名
带有包的类,创建对象格式:
包名.类名 变量名 = new包名.类名();
4、导包:
import 包名.类名;
5、访问修饰符:
public | protected | Default | private | |
同一类中 | √ | √ | √ | √ |
同一包中(子类与无关类) | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包中的无关类 | √ |
①、要想仅能在本类中访问使用private修饰;
②、要想本包中的类都可以访问不加修饰符即可;
③、要想本包中的类与其他包中的子类可以访问使用protected修饰
④、 要想所有包中的所有类都可以访问使用public修饰。
⑤、注意:如果类用public修饰,则类名必须与文件名相同。一个文件中只能有一个public修饰的类。
三、代码块:
1、局部代码块:
局部代码块是定义在方法或语句中
特点:
①、 以”{}”划定的代码区域,此时只需要关注作用域的不同即可(局部代码块内东西不能被外面访问,但是它可以访问外面的东西)
②、方法和类都是以代码块的方式划定边界的。
2、构造代码块:
构造代码块是定义在类中成员位置的代码块-------定义在构造方法中!!!
特点:
①、优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作;
②、每创建一个对象均会执行一次构造代码块。
3、静态代码块:
静态代码块是定义在成员位置,使用static修饰的代码块。
static{ };
特点:
①、它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
②、 该类不管创建多少对象,静态代码块只执行一次。----只在类加载的时候执行一次!!!不管NEW多少次都执行一次!再创建新对象就不执行了!!!
③、可用于给静态变量赋值,用来给类进行初始化。
Java之内部类、包及代码块的更多相关文章
- java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
- java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类
提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定 ...
- java之内部类与匿名内部类
Java 内部类 分四种:成员内部类.局部内部类.静态内部类和匿名内部类. 1.成员内部类: 即作为外部类的一个成员存在,与外部类的属性.方法并列. 注意:成员内部类中不能定义静态变量,但可以访问外部 ...
- java类成员变量与代码块初始化
首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...
- Java基础8-多线程;同步代码块
作业解析 利用白富美接口案例,土豪征婚使用匿名内部类对象实现. interface White{ public void white(); } interface Rich{ public void ...
- java 类、方法、代码块修饰式关键字总结
super 关键字 this和super的区别 访问成员的区别 this关键字 this特点 this使用场景 static关键字 例子 访问权限修饰符 特点 总结: 四个修饰符的特点 访问权限修饰符 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- java提高篇(十二)-----代码块
在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...
- [java多线程] - 锁机制&同步代码块&信号量
在美眉图片下载demo中,我们可以看到多个线程在公用一些变量,这个时候难免会发生冲突.冲突并不可怕,可怕的是当多线程的情况下,你没法控制冲突.按照我的理解在java中实现同步的方式分为三种,分别是:同 ...
随机推荐
- mongodb replica set 配置高性能多服务器详解
mongodb的多服务器配置,以前写过一篇文章,是master-slave模式的,请参考:详解mongodb 主从配置.master-slave模式,不能自动实现故障转移和恢复.所以推荐大家使用mon ...
- starUML安装与破解
安装包百度云: 链接:https://pan.baidu.com/s/1oF_DH7Xh6yun6fFUDB2H3w 密码:1z7e 破解步骤:1. 首先打开你的starUML安装目录,并找到Lice ...
- bzoj 4712 洪水 —— 动态DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4712 设 f[x] = min(∑f[u] , a[x]),ls = ∑f[lson] 矩阵 ...
- 可移植的配置visual studio工程第三方库
现在编程有太多的好用的第三方库,例如 计算机视觉方面的opencv c++的扩充库boost 特殊的第三方库,相机库,通讯库等 使用这些库给我们带来了极大的便利,同时也有很多困扰.这个工程在我电脑上明 ...
- asp.net mvc5 使用百度ueditor 本编辑器完整示例(下)
一.百度ueditor 本编辑器 一个最大的优点是快速导入word文档的内容,特别 是导入word文档的图文混排效果. 操作步骤: 1.先打开word文档,Crtl +C复制 ,Ctrl+V粘贴到Ue ...
- 18.Consent 实现思路介绍
讲一下实现Consent的逻辑 interaction它会根据returnUrl 输入用户名和密码后是在登陆的Controller,登陆完之后呢,会有一个returnUrl returnurl会被带到 ...
- python 网络编程(网络基础之网络协议篇)
前言 C/S B/S 架构 client<----->server browser<--->server 学习socket编程就是要编写一个客户端软件和服务端软件,然后实现服 ...
- 保持plsql窗口布局
在window菜单中有个 save layout 项,设置好窗口布局后,选一下此项就保存你当前的窗口布局了,下次启动就不用再设置了.
- E20180712-hm
directive n. 指令; <美>命令,训令,指令; 方针;
- 新浪微博分享出现libc++abi.dylib: terminating with uncaught exception of type NSException微博微信SDK运行编译报错
SDK出现libc++abi.dylib: terminating with uncaught exception of type NSException 的问题: 解决方法 结合 # 监测bug( ...