首先明确,类是放在文件里的,在文件里面的不同位置就有不同的作用,就是不同类型的类。

1, 顶级类or外部类:包括两种,一个文件中与文件名同名称的类我们称作顶级类(也是外部类),如果在一个文件中的一个类,与顶级类处于同一层级(也就是不是顶级类的内部类,也不是匿名内部类),我们把他看做外部类处理。

  从作用范围的角度来说,对于顶级类(外部类)来说,有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:默认(default)和public。这里的default修饰符可以简单理解为friendly,但是friendly是Java的修饰符,却不是Java类的修饰符。  从功能的角度来说,abstract修饰符都可以添加。

2, 内部类:顾名思义,在某个类的内部

  对于内部类来说,我们把他看做外部类的对象,这个时候内部类所用的修饰符与对象所能使用的修饰符是一样的。按照作用范围:全局,本包,本类,分别对应三种修饰符public,protected,private

  小问题1:如果内部类不是static的,那么static方法中不允许直接创建该类的对象。

  原因要从"把内部类当做外部类的对象"的角度来考虑。我们知道如果一个外部类的静态方法中使用到类的对象,那么这个对象也必须是静态的,所以这个类不是静态的就不能直接新建对象也就理所当然了。从运行角度来讲,内部类的特点是可以直接访问外部类的成员,因此如果静态类中可以创建内部类的对象,那么此时内部类的对象调用外部类的成员时就会出问题(因为这时候还没有外部类的对象,哪来的外部类的对象的成员变量呢?)。

  小问题2:内部类不是static修饰的,那么内部类的成员变量和成员函数不能声明是static的。

  原因很简单:静态成员变量和静态成员变量都是要在加载类的时候就加载到内存的,没有这个类的对象也是可以调用的。那现在再想这个问题外部类(不能用static修饰)没有被加载,而他的内部类(也算是外部类的成员)的成员却先被加载了,这是不正常的。

------------------------ 分割线 ---------------------

上面的内容实在太多,代码表现的话会很多,很杂,建议亲自尝试!!

------------------------ 分割线 ---------------------

3, 匿名内部类:匿名内部类也就是没有名字的内部类

  正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。

  详见:java中的匿名内部类总结(写的很全面,也很详细)

Java类修饰符的使用与作用以及常见问题的更多相关文章

  1. JAVA 类修饰符

    JAVA类的修饰符主要有public,default,protected,private,final,abstract,static 其中外部类中用到的只有public,final,abstract或 ...

  2. Java类修饰符

  3. Java中的类修饰符

    资料主要来源于网络(http://60.28.60.3/zy/java-new/zhishidian/chap3/3.htm) 之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这 ...

  4. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  5. java中的类修饰符、成员变量修饰符、方法修饰符

    类修饰符:  public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fi ...

  6. Java的修饰符

    转自:http://blog.csdn.net/manyizilin/article/details/51926230#L42 修饰符: 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性.主 ...

  7. Java:修饰符小记

    Java:修饰符小记 对 Java 中的 修饰符,做一个微不足道的小小小小记 Java 语言提供了很多修饰符,大概分为两类: 访问权限修饰符 非访问权限修饰符 访问权限修饰符 修饰符 说明 publi ...

  8. java访问修饰符

    了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...

  9. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

随机推荐

  1. ComBox、listBox、checklistBox控件

    omBox控件被称为下拉组合框控件,是由System.windows.Forms.ComBox类提供的,主要作用是讲一个集合数据以组合框的形式显示给用户,当用户单击时将以下拉框显示给用户,供用户选择一 ...

  2. js只允许输入数字和两位小数

    一.js只允许输入数字和两位小数 //只允许输入数字和两位小数 function clearNoNum(obj) { obj.value = obj.value.replace(/[^\d.]/g, ...

  3. Quartz大致介绍(一)

    1. 介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳 ...

  4. 三、cent OS安装配置nginx

    简介Tengine是淘宝发起的web服务器项目,简单的讲就是对nginx进行了二次开发并提供了更丰富的功能,官网地址:http://tengine.taobao.org/ 下载nginx这里使用淘宝二 ...

  5. centos ssh远程登陆

    登录Centos6.5系统. ◆示例:使用root用户登录. 注:若为非root用户登录,输入执行某些命权限不够时需加sudo.   查看SSH是否安装. ◆输入命令:rpm -qa | grep s ...

  6. 11、Map、可变参数、Collections

    Map接口 Map集合概述 *A:Map集合概述: 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同 a:Collection中的集合,元素 ...

  7. thinkphp I() 方法

    I() 方法用于获取前台提交的表单的value值. <form id="complai_form" method="post" action=" ...

  8. 自定义scoll样式

    使用伪类自定义scroll样式 效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  9. BZOJP1096[ZJOI2007]仓库建设——solution

    Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用.突然有一天, ...

  10. 关于npm构建angular2项目问题

    我在win10系统下用npm构建好angular2项目之后,在命令行下运行 ng serve --open,报一下错误: Unknown browser query 'basedir=$(dirnam ...