java 基本概念

      1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率.

  2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)

  3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)

  4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由Object根超类扩展而得,根超类下文会做介绍.

  5.对象的3个主要特性

  behavior---说明这个对象能做什么.

  state---当对象施加方法时对象的反映.

  identity---与其他相似行为对象的区分标志.

  每个对象有唯一的indentity 而这3者之间相互影响.

  6.类之间的关系:

  use-a :依赖关系

  has-a :聚合关系  is-a :继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法.(个性存在于共性中)

  7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化. 例:Data类的构造器叫Data 

  new Data()---构造一个新对象,且初始化当前时间.

  Data happyday=new Data()---把一个对象赋值给一个变量happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变量二者是不同的.new返回的值是一个引用. 

  构造器特点:构造器可以有0个,一个或多个参数 

  构造器和类有相同的名字 

  一个类可以有多个构造器   构造器没有返回值   构造器总是和new运算符一起使用. 

  8.重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载.编译器必须挑选出调用哪个方法. 

  9.包(package)Java允许把一个或多个类收集在一起成为一组,称作包,以便于组织任务,标准Java库分为许多包.java.lang java.util java,net等,包是分层次的所有的java包都在java和javax包层次内. 

  10.继承思想:允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段. 

  11.扩展类:扩展类充分体现了is-a的继承关系. 形式为:class (子类) extends (基类). 

  12.多态:在java中,对象变量是多态的.而java中不支持多重继承. 

  13.动态绑定:调用对象方法的机制. 

  (1)编译器检查对象声明的类型和方法名. 

  (2)编译器检查方法调用的参数类型. 

  (3)静态绑定:若方法类型为priavte static final 编译器会准确知道该调用哪个方法. 

  (4)当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用x所指向的对象的实际类型相匹配的方法版本. 

  (5)动态绑定:是很重要的特性,它能使程序变得可扩展而不需要重编译已存代码. 

  14.final类:为防止他人从你的类上派生新类,此类是不可扩展的. 

  15.动态调用比静态调用花费的时间要长, 

  16.抽象类:规定一个或多个抽象方法的类本身必须定义为abstract 

  例: public abstract string getDescripition 

  17.Java中的每一个类都是从Object类扩展而来的. 

  18.object类中的equal和toString方法. 

  equal用于测试一个对象是否同另一个对象相等. 

  toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示. 

  (toString 方法是一个很重要的方法) 

  19.通用编程:任何类类型的所有值都可以同object类性的变量来代替. 

  20.数组列表:ArrayList动态数组列表,是一个类库,定义在java.uitl包中,可自动调节数组的大小. 

  21.class类 object类中的getclass方法返回ckass类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类. 

  22.class类为编写可动态操纵java代码的程序提供了强大的功能反射,这项功能为JavaBeans特别有用,使用反射Java能支持VB程序员习惯使用的工具. 能够分析类能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射机制十分强大. 

  1).在运行时分析类的能力. 

  2).在运行时探察类的对象. 

  3).实现通用数组操纵代码. 

  4).提供方法对象. 

  而此机制主要针对是工具者而不是应用及程序. 

  反射机制中的最重要的部分是允许你检查类的结构.用到的API有: 

  java.lang.reflect.Field 返回字段.   java.reflect.Method 返回方法.   java.lang.reflect.Constructor 返回参数.

  方法指针:java没有方法指针,把一个方法的地址传给另一个方法,可以在后面调用它,而接口是更好的解决方案. 

  23.接口(Interface)说明类该做什么而不指定如何去做,一个类可以实现一个或多个interface. 

  24.接口不是一个类,而是对符合接口要求的类的一套规范. 

  若实现一个接口需要2个步骤: 

  1).声明类需要实现的指定接口. 

  2).提供接口中的所有方法的定义.

  声明一个类实现一个接口需要使用implements 关键字   class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是类,不能用new实例化一个接口. 

  25.一个类只有一个超类,但一个类能实现多个接口.Java中的一个重要接口   Cloneable 

  26.接口和回调.编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象上的方法.   例:ActionListener 接口监听.   类似的API有:java.swing.JOptionPane   java.swing.Timer   java.awt.Tookit 

  27.对象clone:clone方法是object一个保护方法,这意味着你的代码不能简单的调用它. 

  28.内部类:一个内部类的定义是定义在另一个内部的类 

  原因是:1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据   2.对于同一个包中的其他类来说,内部类能够隐藏起来.   3.匿名内部类可以很方便的定义回调.   4.使用内部类可以非常方便的编写事件驱动程序. 

  29.代理类(proxy):   1.指定接口要求所有代码   2.object类定义的所有的方法(toString equals) 

  30.数据类型:Java是强调类型的语言,每个变量都必须先申明它都类型,java中总共有8个基本类型.4种是整型,2种是浮点型,一种是字符型,被用于Unicode编码中的字符,布尔型.

作者/来源: greatqsh


[转]JAVA基础知识精华总结

1、 对象的初始化
(1) 非静态对象的初始化
在创建对象时,对象所在类的所有数据成员会首先进行初始化。
基本类型:int型,初始化为0。
如果为对象:这些对象会按顺序初始化。
※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。
构造方法的作用就是初始化。
(2) 静态对象的初始化
程序中主类的静态变量会在main方法执行前初始化。
不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时
未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。
2、 继承时,对象的初始化过程
(1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。
(2) 主类静态成员的初始化。
(3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造
方法前,先进行对此超类进行非静态对象的初始化。
(4) 主类非静态成员的初始化。
(5) 调用主类的构造方法。
3、 关于构造方法
(1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。
(2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是
第一条语句。
4、 有关public、private和protected
(1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b.两个类
在同一文件夹中,c.两个类在同一软件包中。
(2) protected:继承类和同一软件包的类可访问。
(3) 如果构造方法为private,那么在其他类中不能创建该类的对象。
5、 抽象类
(1) 抽象类不能创建对象。
(2) 如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。
(3) 继承抽象类的类在类中必须实现抽象类中的抽象方法。
(4) 抽象类中可以有抽象方法,也可有非抽象方法。抽象方法不能为private。
(5) 间接继承抽象类的类可以不给出抽象方法的定义。
6、 final关键字
(1) 一个对象是常量,不代表不能转变对象的成员,仍可以其成员进行操作。
(2) 常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构造方法中初始化

(3) final修饰的方法不能被重置(在子类中不能出现同名方法)。
(4) 如果声明一个类为final,则所有的方法均为final,无论其是否被final修饰,但数据
成员可为final也可不是。
7、 接口interface (用implements来实现接口)
(1) 接口中的所有数据均为 static和final即静态常量。尽管可以不用这两个关键字修饰
,但必须给常量赋初值。
(2) 接口中的方法均为public,在实现接口类中,实现方法必须可public关键字。
(3) 如果使用public来修饰接口,则接口必须与文件名相同。
8、 多重继承
(1) 一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面,接口之间用逗
号分隔。
(2) 接口之间可多重继承,注意使用关键字extends。
(3) 一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还要实现这个接口
继承的接口的方法,接口中的所有方法均须在类中实现。
9、 接口的嵌入
(1) 接口嵌入类中,可以使用private修饰。此时,接口只能在所在的类中实现,其他类不
能访问。
(2) 嵌入接口中的接口一定要为public。
10、类的嵌入
(1) 类可以嵌入另一个类中,但不能嵌入接口中。
(2) 在静态方法或其他方法中,不能直接创建内部类对象,需通过手段来取得。
手段有两种:
class A {
class B {}
B getB() {
    B b = new B();
    return b;
}
}
static void m() {
    A a = new A();
    A.B ab = a.getB(); // 或者是 A.B ab = a.new B();
}
(3) 一个类继承了另一个类的内部类,因为超类是内部类,而内部类的构造方法不能自动
被调用,这样就需要在子类的构造方法中明确的调用超类的构造方法。
接上例:
class C extends A.B {
C() {
    new A().super();  // 这一句就实现了对内部类构造方法的调用。
}
}
构造方法也可这样写:
C(A a) {
    a.super();
}  // 使用这个构造方法创建对象,要写成C c = new C(a); a是A的对象。
11、异常类
JAVA中除了RunTimeException 类,其他异常均须捕获或抛出。

作者/来源: csdn