变量、类和接口

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. Windows Phone 四、控件模版

    控件模版的概念 Windows Phone中每一个控件都有一个默认的模版,用于描述控件的内部组成结构和外观样式 相对于原本的样式外观操作,自定义模版的可自定义性更强 最基本的重写控件模版 <Gr ...

  2. Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份

    http://www.tektea.com/archives/2163.html. 在<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>文章中,我们介绍了使 ...

  3. 细数那些我们都习惯了的Java谣言

    我是一个Java的反对者,至于为什么,我想最大的一个原因是它不实在,不管是当年sun所说的一些言论,还是如今Java用户的一些言论,都有蛊惑之嫌,甚至很多太假了,而这些言论层出不穷,其实就语言本身我不 ...

  4. 响应式内容滑动插件jQuery.bxSlider

    bxSlider特性 1.充分响应各种设备,适应各种屏幕: 2.支持多种滑动模式,水平.垂直以及淡入淡出效果: 3.支持图片.视频以及任意html内容: 4.支持触摸滑动: 5.支持Firefox,C ...

  5. java 使用 集合 制作学生管理系统

    以上是文件组织结构 下面是个.java的具体代码: package com.collection.students.pojo; public class Student { private Strin ...

  6. Problems with MMM for mysql(译文)

    Problems with mmm for mysql posted in MySQL by shlomi 原文:http://code.openark.org/blog/mysql/problems ...

  7. LayaAir学习笔记

    1.Text文本类 var Text=laya.display.Text; Laya.init(620,400); Laya.stage.bgColor="#323232";//设 ...

  8. eclipse中 将java项目转换为web项目

    来自:http://jadethao.iteye.com/blog/1331308 eclipse中 将java项目转换为web项目 1.找到项目工作空间目录,打开.project文件,并修改文件,  ...

  9. If you only do what you can do you'll never be more than you are now.

    If you only do what you can do you'll never be more than you are now. 如果你只是做你力所能及的事,你将不会有所进步:

  10. MYSQL中replace into的用法

    新建一个test表,三个字段,id,title,uid,  id是自增的主键,uid是唯一索引: 插入两条数据 '); ');执行单条插入数据可以看到,执行结果如下: [SQL]insert into ...