变量、类和接口

1、变量的类型

实例变量(不以static修饰)

成员变量

类变量(以static修饰)

所有变量

形参(方法签名中定义的变量)

局部变量            方法局部变量(在方法内定义)

代码块局部变量(在代码块内定义)

2、单例类(Singleton

单例类:一个类只能创建一个对象,称为单例类。

用法:

A、使用private修饰构造器。

B、使用public static 类名返回类型 getInstance(),方法里创建对象并返回对象。

3final修饰符

A、final修饰成员变量:获得初始值后不能再赋值。

    a、类变量:必须在静态初始化块中指定初始值或声明该变量时指定初始值,且只能在两个地方中的一个指定。

    b、实例变量:必须在非静态初始化块、声明实例变量时或构造器中指定初始值,且只能在三个地方中的一个指定。

B、final修饰局部变量:系统不会对局部变量初始化,既可以指定默认值,也可以不。

C、final修饰基本类型变量和引用类型变量:

a、final修饰基本类型变量时不能重新赋值。

b、final修饰引用变量时,引用的对象的地址不能改变,但对象的内容可以改变。

D、final修饰的方法:final修饰的方法不可被重写。

E、final修饰的类:不可被继承。

4、抽象方法和抽象类

抽象方法:

A、使用abstract修饰符修饰。

B、不能有方法体。

抽象类:

A、使用abstract修饰。

B、不能实例化。

   C、可以包含成员变量、含普通方法在内的方法、构造器、初始化块、内部类(接口、枚)5中成分,构造器主要是用于子类调用。

   D、抽象类可以没有抽象方法,但包含了抽象方法的类(继承了抽象父类没有完全实现父类抽象方法的、实现了一个接口,但没完全实现接口抽象方法的)必须定义为抽象类。

7、接口

1)用法:

修饰符 interface 接口名 extends 父接口1,父接口2…

{

  常量定义;

   抽象方法定义;

  内部类定义;

  接口定义;

  枚举类定义;

   默认方法或类方法定义(Java8才支持)

   }

    A、接口修饰符为public或省略(省略默认使用包修饰符)。

    B、接口可以有多个父接口,但不能继承类。

    C、接口里不能有构造器和初始化块。

    D、接口里的成员变量(静态常量)、方法(抽象方法、类方法、默认方法(Java8))、内部类(包括内部接口、枚举)。

    E、接口里的成员都是public权限,如果没有修饰符,默认为public修饰。

    F、接口里的静态常量都要用static final修饰,没有,默认为static final修饰。

    G、接口里不是类方法和默认方法的普通方法,都要有abstract修饰,没有,默认为abstract修饰。

    H、接口不能实例化,但可以声明引用类型。

2)使用接口:

  修饰符 class 类名 extends 父类 implements 接口1,接口2…

  {

类体

  }

  A、实现接口,可以获得接口了的成员变量(静态常量)、方法(抽象方法和默认方法)

  B、一个类实现了一个接口后,必须完全实现所有的抽象方法,否则将会继承到抽象方法,那么这个类也必须定义为抽象类。

  C、接口不能显示继承任何类,但是接口类型的引用变量可以赋给Object类型的引用变量。

8、接口和抽象类

接口:抽象方法,Java8默认方法和类方法,不能定义静态方法

  A、方法

 抽象类:抽象方法和普通方法,可以定义静态方法

 接口:只能定义静态常量

  C、成员变量

  抽象类:既可以定义静态常量、也可以定义普通成员变量

  接口:没有构造器

  D、构造器

抽象类:有构造器,但不能实例化,用于子类的初始化调用

接口:没有初始化块

  E、初始化块

 抽象类:可以有初始化块

  接口:一个类可以实现多个接口

  F、继承实现

抽象类:一个类只能继承一个抽象类

9、内部类

A、内部类可以直接访问外部类的私有数据。

B、外部类不能访问内部类的实现细节。

   C、内部类可以使用private、protected、static三个修饰符,外部类不能,因为外部类上一级程序单元是包,所以它只有两个作用域——同一个包内或者任意位置,所以它只有public修饰符和默认修饰符。

D、非静态内部类不能有静态成员。

1)非静态内部类

A、定义于一个类的内部即可,内部的范围是类中的任何位置,甚至包括方法内部。

B、内部类一般作为成员内部类定义,作为一种与成员变量、方法等相似的类成员,

局部内部类和匿名内部类则不是类成员。

C、非静态内部类可以访问外部的private成员,反过来不可以。

D、内部类对象是寄生于外部类对象当中的,但外部类对象不一定含有内部类对象。

E、不允许外部类的静态成员直接使用内部类的成员。

F、非静态内部类不可以定义静态成员。

2)静态内部类

      A、使用static修饰内部类,则这个内部类属于外部类本身,称为类内部类或静态内部类。

      B、静态内部类可以包含静态和非静态成员。

      C、静态内部类只能访问外部类的静态成员。

      D、外部类不能直接访问静态内部类成员。

      E、接口里可以定义内部类,但必须是静态内部类,即用public static修饰。

10、使用内部类

A、在外部类以外的地方定义内部类

OuterClass.InnerClass  varName

B、在外部类以外的地方创建非静态内部类实例

OuterInstance.new  InnerConstructor()

11、匿名内部类

new 实现接口()| 父类构造器(实参列表)

{

//匿名内部类类体

   }

A、匿名内部类必须实现一个接口或者继承一个父类。

B、匿名内部类不能是抽象类,因为系统会立即创建内部类对象。

C、匿名内部类不可以定义构造器,以为它没有类名,无法定义。

D、匿名内部类可以定义初始化块。

E、Java8以前,被局部内部类访问和匿名内部类访问的局部变量必须用final修饰。

【Java】变量类接口_学习笔记的更多相关文章

  1. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  2. Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. Java程序猿的JavaScript学习笔记(6——面向对象模拟)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. Java程序猿的JavaScript学习笔记(1——理念)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. Java web与web gis学习笔记(一)——Tomcat环境搭建

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  6. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  7. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  9. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. 纪勇破解QQ号问题

    试题描述 来到了新学校,才相处不到一个月,jy就对oyjy一见钟情.于是向oyjy问QQ号.当然身为创(实)新(验)一班的同学,oyjy还是要考考jy.她给了纪勇一个加密后的QQ号,让纪勇解密,解密规 ...

  2. 浅谈Java中的引用

    在Java语言中,引用是指,某一个数据,代表的是另外一块内存的的起始地址,那么我们就称这个数据为引用. 在JVM中,GC回收的大致准则,是认定如果不能从根节点,根据引用的不断传递,最终指向到一块内存区 ...

  3. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  4. 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)

    1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...

  5. 【转】PowerShell入门(十一):编写脚本模块

    转至:http://www.cnblogs.com/ceachy/archive/2013/03/08/PowerShell_Script_Module.html 现在通过编写模块就可以在PowerS ...

  6. xshell5激活

    Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户能轻松和安全地从Windows PC上访问Unix/Linux主机.以上内容全部为广告 ...

  7. Thinkphp更改子集

    //规格编辑 public function standard(){ //$id = $_GET['id'];//dump($id);die; $id = 388; //根据$id 到re_goods ...

  8. Kerberos

    一.Kerberos Concept Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务,为通信双方提供双向身份认证. Kerberos关键术语: ...

  9. 山东省第七届ACM省赛------Triple Nim

    Triple Nim Time Limit: 2000MS Memory limit: 65536K 题目描述 Alice and Bob are always playing all kinds o ...

  10. 用eclipse打开已经编译的工程

    第一种方法: eciplise------>File------>Import------>General------>Existing Project into Worksp ...