第四章:
1、构造方法:构造方法是一个与类名相同的方法。每当使用new关键字创建一个对象,为新建对象开辟了内存空间之后,JAVA系统将自动调用构造方法初始化这个新建对象。
抽象:抽象是从被研究对象中舍弃个别的、非本质的或许研究主旨无关的次要的特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确,简明扼要的认识。
2、对象位于内存的堆
声明能引用对象的实质是它在栈中保留了堆中对象的实际地址
3、基本数据类型作为参数传递时是值传递;对象是引用传递
4、当类的对象被当成垃圾释放掉时,调用finalize方法
5、对象没有任何引用时,对象成为垃圾
资源不够时释放垃圾对象
创建一个引用指向该对象,若引用变为空,则对象被释放了
6、final修饰符作用
若修饰类属性,则该属性为常量;若修饰方法,则该方法称为最终方法,在子类当中不能被覆盖。
7、用static修饰符修饰的域变量不属于任何一个类的具体对象,而专属于类。特点为:它保存在类的内存去(堆中)的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时存取到的都是相同的数值。
static修饰的方法有如下特点:
①static方法是类方法,但可以被所有对象所访问。调用这个方法时,可采用“对象引用.方法明”,也可以采用“类名.方法明”。
②static方法内部的代码,只能访问类中的static属性或方法,不能访问类中的非static属性和方法(因为它们属于对象);但非static方法(对象方法)可以访问static属性或方法。
main方法是特殊的静态方法
8、这是java的规定.
若写 java xxx.yyy
是代表要运行 package xxx 中的class yyy 里面的 main(String[])
所以当你写 java xxx.class 时, 它会以为要找一个叫xxx的package里面的一个叫class的class.

第五章:
1、面向对象的主要特征:封装,继承,多态
封装:是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。
继承:是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。
多态性:是指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题
2、封装是利用访问控制符实现的
封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。
java封装类通过三个步骤实现:
(1)修改属性的可见性,限制访问。
(2)设置属性的读取方法。
(3)在读取属性的方法中,添加对属性读取的限制。
3、通过封装与组合来设计,具有“高内聚,低耦合”的特点。比如A类里有B类的引用,则A的实例对象就可以看成B的实例对象组合而成。
4、当属性和方法前的修饰符为protected 时,在类定义层面上,访问权限为B+C,而在对象层面上,则为B
5、Object类的方法:Object clone();boolean equals (Object obj);void finalize();Class getClass();int hashCode();String toString();void notify();void wait ()
6、重载的多个方法之间往往存在一定的调用关系,即一个方法写有实现功能,其它方法采用委托方式进行调用。
7、条件:参数相同,返回类型相同,子类的访问修饰权限应等于或大于父类。
不一定
8、封装使得内部实现对用户隐藏,有利于安全操作,继承可以实现对象之间的共性与特性,多态性更贴近人的使用习惯,使程序更方便。
9、

class Src
{
   int s;
   public Src(int _s){//构造函数,保证s的非负
	   if(_s>=0)
		   s = _s;
	   else s=0;
   }
   public void change(Dis d){//设计一个特殊的方法来改变s的值,每次改变都会给Dis对象发通知
	   for(int a=1;a<5;a++)
	   {
		   d.get();
		   s=s+a*2;
	   }
   }   
}
class Dis 
{
    Src src;
    public Dis(Src s){
       this.src = s; //Dis对象中拥有了Src对象的引用
    }
    public void invoke(){
       //Dis中对象发送消息给Src的对象
       System.out.println(src.s); 
    }
    public void get()//用来接收通知的方法
    {
    	this.invoke();
    }
}
public class  Run{
   public static void main(String[] args)
   {  
      //产生Src对象
      Src src = new Src(5);
	  //产生Dis对象,并将Src对象引用作为参数传入
      Dis  dis   = new Dis(src); 
      //发送消息,产生调用关系
      dis.src.change(dis);
   }
}