1、 面向对象的基本原则:最合适的属性放在最合适的类里面。合适的方法应当出现在合适的类里面。
2、 考虑问题的时候:首先,应该确定这个问题有几个对象;其次,这几个类、这几个对象每一种类、每个对象有哪些属性和方法;最后,在考虑对象与对象之间的关系。
3、 对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性(特征)和动态属性(行为)。具体的事物
4、 类是一类事物的抽象。
5、 对象与对象的区别主要是靠属性。
6、 类(对象)之间的关系:A、关联关系(映射到代码上是:一个类的方法里面,是另外一个类具体的某一个对象,简单说就是这方法的参数,是另外一个类的对象)
B、继承关系(什么是一种什么(is-a))
C、聚合关系(整体和部分):谁是谁的一部分;更进一步分为:
a、聚集
b、组合(密不可分,必不可少的)
D、实现关系(接口interface),每一个有自己的实现方法。
E、与实现关系相关的:多态
7、怎样从问题中分析类:找名词,但是要分清楚那些属于属性和那些属于类
8、首先,必须定义类,才有对象。
9、为什么用对象?可重用性(Reusable)\可扩展性(Extensibility)\维护和替换更加方便
10、成员变量:(包括基本类型和引用类型(默认为null)),可以对其初始化,也可以不对其初始化(Java默认),范围整个类体
11、引用类型:指针(一小块内存调用一大块内存)
12、构造方法:把自己构建为一个新对象。(使用new+构造方法 创建一个新的对象)
13、当一个方法调用完成之后,栈(局部变量)里面为他分配的所有空间全部消失。
14、自己定义了构造方法,系统就不会默认。
15、static属于类所有。只有一份。static方法中不可访问非static的成员。公用变量
静态方法不能以任何方式引用this和super关键字。
16、方法重载(overload):参数不一样是指参数的类型和参数的个数不一样。
17、this是一个引用,他指向自身的对象。他的值是当前对象的引用。一般出现在方法里面。
18、package是解决类的命名冲突问题。约定俗称用公司的域名倒过来写。编译的文件要和包的层次完全一致。java.lang不需要引入,直接用。必须保证该类的class文件位于正确目录下。
19、jar-cvf打包。
20、权限控制:public\default\protected\private class的修饰符只可以用public和default
21、extends关键字实现类的继承机制。super关键字指向当前对象父类对象的引用(调用父类的构造函数、方法、成员变量)。
22、重写(override):相同的方法名称、相同的参数列表、相同的返回类型。要重写最好(copy)。重写方法不能使用比被重写方法更严格的访问权限。
23、子类的构造的过程中必须调用其基类的构造方法。首先,调用父类的构造方法。使用this调用本类的另外的构造方法。如果使用super,必须写在子类构造方法的第一行。
24、如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。
25、学会分析内存的执行情况,就能解决所有的问题。
26、Object类是Java所有类的根基类。如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类。
27、hashcodes table:他独一无二的代表一个对象,并且通过hash编码找到这个对象所在的位置。
28、equals:在内存中分析执行过程。比较在内容上是不是相等。查API文档。指向同一个引用就相等。比较两个对象最好重写equals方法。
Public Boolean equals(Object obj)方法:提供定义对象是否“相等”的逻辑。
Object的equals方法定义为:x.equals(y)当x和y是同一个对象的应用时返回true否则返回false;
JDK提供的一些类,如String,Date等,重写了object的equals方法。
29、对象转型(casting):一个基类的引用不可以访问其子类对象新增的成员(属性和方法);
可以使用引用变量(instanceof(整个对象是什么东西))类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类;
子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting).
30、动态绑定(polymoph):也叫多态。动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。”划内存图执行情况可以加深对多态的理解。可扩展性达到极致;面向对象的核心。多态存在的条件:
A、要有继承
B、要有重写
C、父类引用指向子类对象
31、抽象类:关键abstract 只有定义没有实现的方法,叫抽象方法。抽象方法必须重写。抽象类不能new,因为他是残缺不全的。抽象类必须被重写。
32、final关键字:final的变量的值不能够被改变(final的成员变量、final的局部变量(形参))
Final的方法不能够被重写
Final的类不能够被继承
相当于只能读,不能重写。
33、interface(接口):多个无关的类可以实现同一个接口。
一个类可以实现多个无关的接口。
与继承关系类似,接口与实现类之间存在多态性。
特殊的抽象类。是抽象方法和常量值的定义的集合,而没有变量和方法的实现。
修饰符只能是:public、final、static(也是接口默认的)
接口中的抽象方法修饰符只能是public的(也是接口默认的)
实现接口的关键字:implements
接口对于我们整个实际当中的对象来说:他实际就是每一接口暴露了对象的部分方法。
接口之间可以相互继承。
34、匿名对象:只需调用一次,没有起名字。直接new,没有引用。
35、实现类的封装性:避免对数据不合理的操作。可维护性
36、静态代码块:
A、 一个类中可以使用不包含在任何方法体中的静态代码块(static block ),当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。
B、类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。
37、内部类:
38、匿名内部类: