个人通俗理解:

  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之内部类、包及代码块的更多相关文章

  1. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  2. java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

    提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定 ...

  3. java之内部类与匿名内部类

    Java 内部类 分四种:成员内部类.局部内部类.静态内部类和匿名内部类. 1.成员内部类: 即作为外部类的一个成员存在,与外部类的属性.方法并列. 注意:成员内部类中不能定义静态变量,但可以访问外部 ...

  4. java类成员变量与代码块初始化

    首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...

  5. Java基础8-多线程;同步代码块

    作业解析 利用白富美接口案例,土豪征婚使用匿名内部类对象实现. interface White{ public void white(); } interface Rich{ public void ...

  6. java 类、方法、代码块修饰式关键字总结

    super 关键字 this和super的区别 访问成员的区别 this关键字 this特点 this使用场景 static关键字 例子 访问权限修饰符 特点 总结: 四个修饰符的特点 访问权限修饰符 ...

  7. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  8. java提高篇(十二)-----代码块

    在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...

  9. [java多线程] - 锁机制&同步代码块&信号量

    在美眉图片下载demo中,我们可以看到多个线程在公用一些变量,这个时候难免会发生冲突.冲突并不可怕,可怕的是当多线程的情况下,你没法控制冲突.按照我的理解在java中实现同步的方式分为三种,分别是:同 ...

随机推荐

  1. 洛谷P3385判负环——spfa

    题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...

  2. 使用memcpy 复制unsigned int 型的数据

    转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/53214692 函数原型: void *memcpy(void *dest, con ...

  3. socket辅助类

    using System; using System.Collections; using System.Net; using System.Net.Sockets; using System.Tex ...

  4. html+css构成的框架,可自行改造

    运行效果 代码下载地址:http://pan.baidu.com/s/1eSeBh2E

  5. 基于粒子群优化的无约束50维Rosenbrock函数求解

    基于粒子群优化的无约束50维Rosenbrock函数求解 一.问题重述 无约束50维的Rosenbrock函数可以描述如下: 其中, 0 要求按PSO算法思想设计一个该问题的求解算法. Rosenbr ...

  6. UVa 820 Internet Bandwidth (裸板网络流)

    题意:有一个计算机网络,输入节点数n,输入网络流源点和汇点src,des,再输入双向边数m.给出m条边的负载,求最大流. 析:直接上网络流的最大流. 代码如下: #pragma comment(lin ...

  7. .NET 5 - 下一代.NET

    不知不觉中微软已经计划推出了下一代的.NET了,我们先来看一下新的.NET有包含什么 What's new in .NET 5? .NET 5将会引入新的APIs,运行时功能和新的语言特色. 在运行时 ...

  8. C++ STL map使用

    Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数:map<string , in ...

  9. HDU 3501【欧拉函数拓展】

    欧拉函数 欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) . 通式:φ(x)=x*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)-..(1- ...

  10. CentOS Linux 7 提示 lsof: 未找到命令

    我们常使用 lsof -i:端口号 命令来查看某端口是否开放,如使用下面的命令,查看8080端口: lsof -i: 结果: 提示:lsof:未找到命令 解决办法 使用yum来安装lsof,命令如下: ...