《Java编程那点事儿》读书笔记(三)——static,this,抽象类,接口和包
1. static
1)静态变量:Java虚拟机为静态变量开辟单独的存储空间,所以所有的对象内部的静态变量在内存中都指向同一个地址,那么不管哪个对象改变这个成员变量,所有对象中该成员变量的值都发生变化。调用的方法一般为
类名.成员变量(常量)
2)静态方法:静态方法内部只能使用静态的成员变量,调用的方法:
类名.方法名(参数)
3)静态代码块:静态代码块在该类第一次被使用时执行一次,以后再也不执行。例如:
public class StaticBlock{
static{
System.out.println("静态代码块!");
}
}
2.final
1)final数据:final修饰的数据时常量,只能赋值一次,通常声明为static,例如:
public final static int MALE = 0;
2)final方法:final修饰的方法不能被覆盖。
3)final类:不能被继承。
3.this
1)引用成员变量
public class ReferenceVarible{
private int a; public void setA(int a){
this.a = a;
}
}
2)引用构造方法:在类中只写一个构造方法,然后其他的构造函数用this引用这个构造方法
public class ReferenceVarible{
private int a; public ReferenceVarible(int a){
this.a = a;
} public ReferenceVarible(){
this(0);
}
}
在使用时this只能出现在构造方法内部的第一行可执行代码。
4.super
1)引用父类构造方法
public subClass(int a){
super(a);
}
以上代码调用父类有一个参数的构造函数。
2)引用父类成员方法:如果子类覆盖了父类的方法,还是想要调用父类的方法,可以用super修饰,例如:
super.test();
5.抽象类
public abstract class A{
public A(){}
}
抽象类不能使用自身的构造函数创建对象,但抽象类可以声明对象,默认都是null,无法调用抽象类中的非静态属性和非静态方法。
6.抽象方法
public abstract void test();
抽象方法没有方法体,所在的类必须为抽象类,强制子类覆盖抽象方法(类似制定了某种房屋的框架,强制遵守这个框架并实现细节)。
7.接口——常量数据+抽象方法
接口是一个规范,比如每家都有红烧肉,但是每家的红烧肉的味道都不一样,红烧肉就是接口,每家的红烧肉就是对接口的实现。
接口中声明的方法在实现的时候是必须被调用的,比如虽然每家的红烧肉味道不一样,但是都要有肉,而且是红烧的,然后就不管怎么做了,哪怕你做的是甜的,我也叫他红烧肉
接口的定义
访问控制符 interface 接口名 [extends 父接口名1,父接口名2......]{
常量声明
方法声明
}
public interface USB{
public static final int V = 5; public abstract byte[] readData();
public abstract void writeData(byte[] data);
}
接口的实现
访问控制符 [修饰符] class 类名 [extends 父类名] implements 父接口名1,父接口名2......
public class Computer implements USB{
int memorySize; public byte[] readData{
//读数据逻辑
} public void writeData{
//写数据逻辑
}
}
8.包
1)打包:将声明的类放入包中,即为类指定包名。
package 包名1[.包名2[.包名3......]];
package.game.bubble.ui就对应路径\game\bubble\ui
打包的语句必须是程序代码中第一行可执行代码
打包的语句最多只有一句。
2)JDK编译和运行打包
javac -d 类文件路径 源代码名称
//文件名:PackageClass.java
package chapter8;
public class PackageClass{
//类内部的代码
} javac -d d:\ PackageClass.java
上述命令将PackageClass类编译成class,并将生成的class文件D盘根目录下。运行这个类:
java 包名.类名
java chapter8.PackageClass
3)引入包
import 包名1.[.包名2[.包名3......]].类名|*;
import只引入当前包下面的类,而不引入该包下面的子包里面的类。
《Java编程那点事儿》读书笔记(三)——static,this,抽象类,接口和包的更多相关文章
- 《实战Java高并发程序设计》读书笔记三
第三章 JDK并发包 1.同步控制 重入锁:重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,这种锁可以反复使用所以叫重入锁. 重入锁和synchro ...
- 《Effective Java》读书笔记三(类和接口)
No13 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.模块之间只通过它们的API进行通信,一个 ...
- 《Java并发编程的艺术》读书笔记:二、Java并发机制的底层实现原理
二.Java并发机制底层实现原理 这里是我的<Java并发编程的艺术>读书笔记的第二篇,对前文有兴趣的朋友可以去这里看第一篇:一.并发编程的目的与挑战 有兴趣讨论的朋友可以给我留言! 1. ...
- 《深入了解java虚拟机》高效并发读书笔记——Java内存模型,线程,线程安全 与锁优化
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考& ...
- <<Java RESTful Web Service实战>> 读书笔记
<<Java RESTful Web Service实战>> 读书笔记 第一章 JAX-RS2.0入门 REST (Representational State ransf ...
- 【转载】MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每 ...
- 《Java并发编程的艺术》读书笔记:一、并发编程的目的与挑战
发现自己有很多读书笔记了,但是一直都是自己闷头背,没有输出,突然想起还有博客圆这么个好平台给我留着位置,可不能荒废了. 此文读的书是<Jvava并发编程的艺术>,方腾飞等著,非常经典的一本 ...
- 《深入理解java虚拟机》读书笔记三——第四章
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...
- 《深入理解Java虚拟机》读书笔记三
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...
- Struts2技术内幕 读书笔记三 表示层的困惑
表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form ...
随机推荐
- android sdk manager下载慢可以使用代理信息
mirrors.neusoft.edu.cn 80
- Codeforces Round #265 (Div. 1) C. Substitutes in Number dp
题目链接: http://codeforces.com/contest/464/problem/C J. Substitutes in Number time limit per test 1 sec ...
- 【CentOS】安装chrome
参考资料:http://www.cnblogs.com/xia520pi/p/3545715.html 问题描述: 出现如下错误: 升级glibc任然无效,最后在博客园:http://www.cnbl ...
- hdu 2426 Interesting Housing Problem 最大权匹配KM算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2426 For any school, it is hard to find a feasible ac ...
- 【BZOJ】【1010】【HNOI2008】玩具装箱Toy
DP/斜率优化 根据题目描述很容易列出动规方程:$$ f[i]=min\{ f[j]+(s[i]-s[j]+i-j-1-L)^2 \}$$ 其中 $$s[i]=\sum_{k=1}^{i} c[k] ...
- yum rpm 命令 linux
centos的软件安装大致可以分为两种类型: [centos]rpm文件安装,使用rpm指令 类似[ubuntu]deb文件安装,使用dpkg指令 [centos]yum安装 类似[ubuntu ...
- C# 设置程序开机自动运行(+注册表项)
有时候我们需要让软件安装好了,开机自动运行,这时我们需要把启动项加载到注册表中,需要注意的时现在很多杀毒软件在其他软件更改注册表的时候会有提示,可能会阻止.下面代码包含增加启动项到注册表和删除启动项. ...
- hdu 4722 Good Numbers 数位DP
数位DP!!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include< ...
- __stdcall 与 __cdecl
(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈. WIN32 Api都采用_stdcall调用方式,这样的宏定 ...
- 用android模拟器Genymotion定位元素
1.下载并安装android模拟器Genymotion 2.拖apk包到模拟器,双击模拟器中的apk软件包,进入应用程序 3.下载并安装android sdk 3.1 点击...\Android\an ...