【Java】变量类接口_学习笔记
变量、类和接口
1、变量的类型
实例变量(不以static修饰)
成员变量
类变量(以static修饰)
所有变量
形参(方法签名中定义的变量)
局部变量 方法局部变量(在方法内定义)
代码块局部变量(在代码块内定义)
2、单例类(Singleton)
单例类:一个类只能创建一个对象,称为单例类。
用法:
A、使用private修饰构造器。
B、使用public static 类名返回类型 getInstance(),方法里创建对象并返回对象。
3、final修饰符
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】变量类接口_学习笔记的更多相关文章
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(6——面向对象模拟)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(1——理念)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java web与web gis学习笔记(一)——Tomcat环境搭建
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
随机推荐
- android 横向滚动条
/*** * 横向滚动条,修改版,从左向右滚动,支持html代码和html里面的网络图片 */public class MarqueeView extends LinearLayout { priva ...
- 纯html、css3、js的时钟
之前在网上看了一些使用js写的时钟,但感觉实现的方法有点麻烦,所以就自己重新写了一个例子,样子有点丑,但方法比较简单,大家就凑合看吧 其中采用的主要方法是原生js里面的Data(时期)对象,以及它的. ...
- Asp.net MVC5 框架揭秘 S412 实例解析 – 绝妙的扩展 模式的胜利
Asp.net MVC5 框架是个 开源的,处处可扩展的框架. 蒋先生 在他的这本书里 对如何理解框架,如何扩展框架, 给出了大量的说明和实例. 先上效果图 大部分做传统BS 的同学看到这个页面,脑海 ...
- 最好的cpm广告联盟哪里有
最好的cpm广告联盟哪里有,58传媒广告联盟还要提醒众位站长的是网站在经营发展中必须最大化的扩展自己的优势力量.每个网站都有属于自己的优势魅力,这些优势特点只有得到最大化的发挥才能为网站带来意想不到的 ...
- PhpStorm设置编码
PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查. 本文为大家讲解的是如何设置phpstorm 编辑器的编码,感 ...
- js 自带的 map() 方法
1. 方法概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 2. 例子 2.1 在字符串中使用map 在一个 String 上使用 map 方法获取字符串中 ...
- poj3069 Saruman's Army
http://poj.org/problem?id=3069 Saruman the White must lead his army along a straight path from Iseng ...
- ubuntu 设置 默认的JDK路径
首先查询有多少种JDK已经被安装了 sudo update-alternatives --list java 其次 配置你想默认的JDK sudo update-alternatives --conf ...
- java反射类内容获取
private void DtoReflect(Object obj, MqDto mqDto) throws Exception { Map map = getMap(mqDto); if(obj= ...
- Codeforces Round #342 (Div. 2)-B. War of the Corporations
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...