1.OOP (Object Oriented Programming) 面向对象编程;
OOAD(Object Orient Analysis Design)面向对象的分析与设计,设计尽可能地接近现实世界,以最自然的方式表述实体。
使用UML建模语言创建系统的分析模型与设计模型是OOAD的实现的主要手段。
2.类创建模式:工厂方法模式 (Factory Method,类创建模式)----待实现??????
对象创建模式共4种:单例模式、抽象工场模式、建造者模式、原型模式
单例模式(Singleton):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
抽象工厂模式(Abstract Factory):当有多个抽象角色时,使用的一种工厂模式。待实现????
建造模式(Builder):将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
原型模式(Prototype):通过给出一个原型对象来指明所要创建的对象的类型,然后复制这个原型对象的方法创建出更多同类型的对象。
3.重写equals方法的时候总要重写hashCode方法;如果不重写hashCode(),就违反Object类的hashCode()的通用约定,导致这个类无法与所有基于散列值得集合类结合在一起正常工作,包括HashMap,HashSet、HashTable。
4.重写和重载:
重写:父子类中,方法名相同,参数列表相同(类型,个数),方法体相同,返回值和参数列表的访问权限大于等于父类的访问权限,看对象的类型调用方法,运行期绑定;
重载:同一类中,方法名相同,参数列表不同,看参数列表调用方法,编译期绑定。
5.abstract class中可以定义成员变量和非abstract方法,interface只能定义abstract方法(方法有无abstrator修饰都是抽象方法?);
abstract class继承是单继承,而interface可以多实现;
abstract class继承是一种“is a”的关系,父类和派生类在概念本质上是一致的,interface仅仅是实现了interface定义的契约而已。
6.面向对象的基本特征:封装(封装属性和方法)、继承(新类可以从现有的类中派生)、多态(参数的多态性,方法的重载和重写)。
7.子类通过super.method();调用父类的方法;
创建子类时默认调用父类无参构造方法,若调用父类有参的构造方法可以在子类的构造方法第一行通过 super(参数)形式调用。
构造器方法不能被继承,因此不能被重写,但可以被重载
8.String类是final类,故不能被继承。
9.static修饰成员变量:修饰的变量是类的变量,可以通过类名来引用static成员,static成员变量和类的信息一起存储在方法区,而不是堆中,一个类的成员变量只有一份,无论该创建了多少对象。
static修饰成员方法:修饰的方法调用时没有具体的对象,因此static方法中不能对非static成员(对象成员)进行访问,static方法的作用在于提供“工具方法”和“工厂方法"等。
static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来加载静态资源。
10.fanal/finally:final用于定义常量;finally是异常处理机制的一个子句,不管前面定义的try语句中是否有异常,都会执行finnaly子句中的代码;
instanceof:判断其指向对象的实际类型;
synchronized:修饰方法或方法块,防止多个线程同时访问这个类中的synchronized块;
throw/throws:throw允许用户抛出一个exception对象或任何实现了throwable的对象。throws用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。
11.接口可以继承接口;抽线类可以实现接口;抽象类可以继承实体类。
12.静态代码块,代码块,构造方法的执行顺序:子类A继承B,A和B都有静态代码块,代码块,构造方法,现在 A a = new A();
执行顺序为: B static{} Astatic{} B{} B() A{} A()
13.类 class :对某种类型的对象定义变量和方法的原型,它表示对现实生活中一类具有共同特征的事物的抽象;
类库 class library :实现各种功能的类的集合;
包 package :类的容器,用于分隔类名空间;
jar 文件:用于发布和使用类库,可被编译和jvm直接使用。
14.栈(stack)和堆(heap)都是java用来在内存中存放数据的地方,二者的区别:
栈存放基本类型变量和对象引用,当超过作用于后释放;堆存放new出来的对象和数组;
堆可以动态的分配内存大小,生存期不必事先告诉编译器,java的垃圾收集器会自动收走这些不在使用的数据;存在栈中的数据大小与生存期必须是确定的,缺乏灵活
性。栈的存取速度比堆块,仅次于位于CPU中的寄存器。堆由于要在运行时动态分配内存,存取速度较慢。
栈的数据可以共享,堆不可以;
栈是一种线型集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理,堆是不连续的,可随机访问。