封装是指利用抽象数据类型将数据(属性)和对数据的操做(方法)包装起来,把对象的属性和动做结合成一个独立的单位,并尽量隐蔽对象的内部处理细节。java
一个类拥有另外一个类的全部属性和行为时,就称为继承。被继承类为父类,继承类为子类。并发
经过子类对父类方法的重写实现多态异步
同一类中同名方法实现多态(重载方法需定义不一样参数列表)函数
在Java语言中,有一个顶层的类Object,它是Java中全部类的父类,在Java中称为基类this
类型 | private | 无或者(friendly) | protected | public |
---|---|---|---|---|
同一类 | 是 | 是 | 是 | 是 |
同一包中子类 | 否 | 是 | 是 | 是 |
同一包中非子类 | 否 | 是 | 是 | 是 |
不一样包中子类 | 否 | 否 | 是 | 是 |
不一样包中非子类 | 否 | 否 | 否 | 是 |
每一个源文件只能有一个public类,且类名也是源文件名。命令行
一个源文件能够不含有公有类,此时文件名能够任取。code
[public][abstract | final] class Name[extends SuperName][implements InterfaceNameList]{ //成员变量的声明 //成员方法的定义 } abstract//抽象类说明符。抽象类不能直接生成对象 final//终级类说明符。终级类不能被继承
[public | private | protected][static][final][transient][volatile] DataType variableName[ = initializationValue] final//声明一个终极变量(即常量) static//声明一个静态变量(类变量) transient//声明一个暂时性变量,提示Java虚拟机忽略保存 volatile//异步保护,维护变量在并发进程的先后一致性
[public | private | protected][abstract]|[final][static][native][synchronized] returnDataType | void methodName(parametersList) throws exceptionList{ //方法内变量 //方法内主体代码 } native//本地化 synchronized//同步 throws exceptionList//定义方法抛出的异常对象的列表
className ObjectName = new className(parameter);
new className(parameter)
引用是一个地址,指明了对象的的变量和方法的储存位置。当把一个对象赋值给一个对象变量或者做为方法的参数时,使用的并非对象自己,也不是它的拷贝,而是它的地址。对象
Student stu1 = new Student(); Student stu2 = stu1; //stu2和stu1引用一样的对象,stu2不是stu1的拷贝,stu2并无分配内存空间
实例成员是指在访问成员变量和成员方法时,须要经过new建立一个实例对象,而后经过" . "操做符去引用类的成员继承
实例成员不用static修饰进程
用static修饰的变量
咱们知道,无论是类方法与实例方法,都是以代码块的方式存在,当类的字节码文件加载到内存时,它们在内存中均只有一个备份。但类方法与实例方法不相同的是:
(1)对类的实例方法, 当类加载到内存时,不分配人口地址。当该类建立对象后,类中的实例方法才会被分配人口地址,从而实例方法能够被类建立的任何对象调用执行,这我的口地址也是被全部对象共享的。
(2)对类的类方法,在该类被加载到内存时,就分配了相应的人口地址,固然这个地址在整个类中也是共享的,从而类方法不只能够被类建立的任何对象调用执行,也能够直接经过类名调用。
那么Java应用程序类中的main( )方法为何必须声明为static呢?这是由于只有类方法,当类加载到内存后就能够得到该方法的人口地址,从而能够由Java虚拟机调用执行,成为整个应用程序的执行人口。若是把main( )方法声明为实例方法,这个main( )方法就没法在类加载到内存时被Java虚拟机直接调用。
初始化器是一段不在方法以内的程序代码,这段代码用{ }包围起来。
实例初始化器:无修饰符static,在对象生成时初始化变量(通常不会使用,没有实际意义)
静态初始化器:有修饰符static,在被类加载入内存时只执行一次.
public class Demo { // constructor 构造函数 public Demo() { System.out.println("constructor"); } // static initializer 静态初始化器 static { System.out.println("static"); } public static void main(String[] args) { new Demo(); } } //输出 static constructor
实例代码的初始化在构造方法中完成,类变量的初始化应在静态初始化器中完成,使代码更容易维护和阅读。
//格式一 Java className parameter1 parameter2 parameter3 //格式二(当参数中包含空格时) Java className "parameter1" "parameter2" "parameter3" //混合使用(包含空格参数用双引号括起来,没空格没必要括起来) Java className "this is" "a command" "line parameter"
public static void main(String [] args)