JAVA 笔记(四)

  1. Java.lang包下的类不需要导入,其他的都需要导入
  2. Random() 方法是左闭右开(包括左边不包括右边,返回类型是double);
  3. 局部代码块:局部位置,用于限定变量的生命周期。构造代码块:在类中的成员位置,用{}括起来的代码,每次调用构造方法执行前,都会先执行构造代码块,作用是把多个构造方法中的共同代码放到一起,对对象进行初始化。静态代码块:在类中的成员位置,用{}括起来的代码,只不过他用static修饰了(最先执行,只执行一次)作用是一般是对类进行初始化,类加载的时候就有了,而另外的只能是创建对象才有。
  4. 执行顺序:静态代码块>构造代码块>构造方法。(跟代码顺序无关)静态代码块只执行一次。构造代码块每次调用构造方法都执行。
  5. Class 子类名 extends 父类名{};父类也叫基类或者超类,子类也叫派生类。
  6. 继承提高了代码的复用性和提高了代码的维护性。让类与类之间产生联系,是多态的前提(同时也是继承的弊端,类的耦合性增强了,故有弊端。开发的原则:高内聚,低耦合);打破封装性(这也是另个弊端)
  7. Java不支持多继承,但是支持多层继承(集成体系)。
  8. 子类只能继承父类所有非私有的成员(成员方法和成员变量)。
  9. 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
  10. 子类中的成员变量和父类中的成员变量名称一样:在子类方法中访问一个变量的查找顺序:1.在子类方法的局部范围找,有就是用,2.在子类成员范围找,有就使用。3.在父类的成员范围找,有就是用,4.若还是找不到就报错(其实这些就是按就近原则来的)。
  11. This代表本类对应的引用,super代表父类存储空间的标识(可以理解为父类的引用,可以操作父类的成员)
  12. This.成员变量 调用本类的成员变量。Super.成员变量 调用父类的成员变量。This(参数)   调用本类的构造方法 super(参数) 调用父类的构造方法。
  13. 创建对象就会调用构造方法(构造方法是一种特殊的方法)。
  14. 子类中所有的构造方法默认都会先访问父类中空参数的构造方法。因为子类会继承父类中的数据,可能还会使用父类中的数据,所以,子类初始化之前,一定要先完成父类数据的初始化。
  15. 子类每一个构造方法的第一条语句默认都是super()(调用父类的无参数的构造方法);
  16. 如果父类没有无参数的构造方法,该如何解决:A:在父类中加一个无参数的构造函数。B;通过使用super()关键字去显示的调用父类的来参数构造。C:子类通过this去调用本类的其他构造方法。子类中一定要有一个去访问父类的构造方法,否则父类数据没有初始化。This(….)和super(…..)必须出现在第一条语句上,如果不是在第一条语句上,就可能对父类的数据进行了多次初始化,所以必须放在第一条语句上。
  17. 一个类的初始化过程;1.成员变量初始化2.默认初始化。3.显示初始化。4.构造函数初始化。
  18. 子父类的初始化(分层初始化)先进行父类初始化,在进行子类初始化。
  19. 虽然子类中构造方法默认有一个super().初始化的时候,不是按照那个顺序进行的,而是按照分层初始化进行的,super仅仅表示要先初始化父类数据,在初始化子类数据。
  20. 子类调用方法:a:现在子类中查找,看有没有这个方法,有就是用。B;在看父类中,有没有这个方法,有就是用。(其实也还是就近原则);
  21. 方法重写(方法覆盖,方法复写):子类中出现了和父类中方法一模一样的方法(包括方法名,参数列表,返回值)
  22. 方法重载:本类中出现的方法名一样,参数列表不同,与返回值无关。
  23. 方法重写的注意事项:父类中的私有方法不能被重写(因为父类私有方法根本就不能继承)子类重写父类方法时,访问权限不能更低。父类静态方法,子类也必须通过静态方法进行重写(其实这个算不上方法重写,但是现象却是如此)
  24. 子类重写父类的时候,最好要一模一样。
  25. 由于继承中方法有一个现象:方法重写。所以父类的功能就会被子类给覆盖掉,有些时候我们不想让子类覆盖掉父类中的方法,这时就用到final关键字。
  26. Final:最终的意思。常见的它可以修饰类,方法,变量。
  27. Final的特点:final修饰的类,该类不能被继承。Final修饰的方法不能被重写。Final修饰的变量不能被重新赋值(因为这个变量其实是常量)
  28. 常量的分类a;子面值常量(10,ture等)b;自定义常量(final int x=10);
  29. Final修饰局部变量的问题。基本类型:基本类型的值是不能改变的。引用类型:引用类型的地址值不能发生改变。但是该对象的堆内存的值是可以改变的。
  30. 成员初始化在方法初始化之前(包括构造方法)所以成员变量的值可以在方法中重新赋值。打印出来就是后来的新值。
  31. 被final修饰的变量只能赋值一次。
  32. Final修饰变量的初始化时机:在构造方法完毕前给赋值(非静态的常量)
  33. 多态:某一事物,在不同时刻表现出来的不同状态。(从右边往左边念,xx是yy(xx);)
  34. 多态的前提:A;要有继承关系。B;要有方法重写(也可以没有,但是没有意义)C;要有父类引用指向子类对象。(父 fu=new 子();)。
  35. 多态中的成员访问特点:A;成员变量:编译看左边,运行看左边。B;构造方法:创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。C:成员方法;编译看左边,运行看右边。D;静态方法:编译看左边,运行看左边(静态和类相关,算不上重写,所以访问还是左边的)。(这些看哪边就是哪边的结果值)。
  36. 由于成员方法存在方法重写,所以运行看右边。把父类给覆盖了。
  37. 多态的好处,提高了代码的维护性(继承保证的)提高了代码的扩展性(由多态保证)。
  38. 自己写调用的的方法,一般写静态的,而类中的方法不是。
  39. 多态的弊端:不能使用子类特有的功能。(解决办法:1.创建子类对象,不可取太占用内存。 2.把父类的引用强制转换成子类的引用(向下转型))。

   40.向上转型 父 fu=new ZI()    向下转型ZI  z=(ZI)f(要求该f必须是能够转换成为ZI的)。-------->待续

posted on 2016-04-05 20:55  doAction  阅读(270)  评论(0编辑  收藏  举报