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中实现同步的方式分为三种,分别是:同 ...
随机推荐
- React.js 之hello word
引入的js文件说明 react.js 是 React 的核心库 react-dom.js 是提供与 DOM 相关的功能 babel.min.js的作用是将 JSX 语法转为 JavaScript 语法 ...
- python 基础之第十二天(re正则,socket模块)
In [14]: 'hello-wold.tar.gz'.split('.') Out[14]: ['hello-wold', 'tar', 'gz'] In [15]: import re In [ ...
- configure: error: APR not found. Please read the documentation
本以为Apache的编译安装很简单,其实不然: 以前的环境下编译报错很少 ,但这次不行了 提示configure: error: APR not found. Please read the docu ...
- Android开发--Activity
一:Activity生命周期 (1)Activity生命周期中的几种方法: protected void onCreate(Bundle savedInstanceState): protected ...
- 方法名的string类型应用(补)
string strClass = "stringConvertClass.test"; //命名空间+类名 string strMethod = "Method&quo ...
- Volley Cache机制分析
1.http缓存机制 要弄明白volley缓存机制,那么肯定是和浏览器的缓存机制有关了,简单来说volley整套框架要做的事都是模拟浏览器来进行一次次的http交互 1.1.概述 http缓存的是指当 ...
- Flutter实战视频-移动电商-19.首页_火爆专区界面布局编写
19.首页_火爆专区界面布局编写 看一下图片的效果 一个标题栏,下面是多行两列.里面可以用column布局,外面用Warp流式布局 有得小伙伴说这里可以用网格布局,网格布局的话还是有一定的效率问题.这 ...
- LeetCode: 520 Detect Capital(easy)
题目: Given a word, you need to judge whether the usage of capitals in it is right or not. We define t ...
- Dapper的正确使用姿势
本文demo适用于MySQL Dapper优势和缺点 优点 高性能.易排查.易运维.灵活可控 缺点 和EF相比,手写sql当修改表结构不易发现bug. 习惯了EF后再来使用Dapper,会很难适应那种 ...
- 七牛上传图片视频demo
/引入Plupload .qiniu.js后 varuploader = Qiniu.uploader({ runtimes:'html5,flash,html4',//上传模式,依次退化 brows ...