Java重新学起3

面向对象:super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。
普通方法:没有顺序限制,可以随便调用。
构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显示的调用super(...);那么Java都会默认调用super();作为父类的初始化函数。所以super();加不加都行。


final修饰变量:常量    修饰方法:该方法不可被子类重写。但是可以被重载。   修饰类:修饰的类不能有子类,不能被继承。


封装:隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。
程序设计追求:高内聚、低耦合。
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
低耦合:仅暴露少量的方法给外部使用。
封装要点:类的属性的处理:1、一般使用private。(除非本属性确定会让子类继承)
2、提供相应的get/set方法来访问相关属性。这些方法通常是public,从而提供对属性的读取操作。(注意:boolean变量的get方法是用:is开头!)
一些只用于本类的辅助性方法可以用private,私有。希望其他类调用的方法用public



多态:在执行期间(而非编译器)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。由于是在运行期的动态实现,直到new出对象才能确定具体调用的哪个方法,因此多态又叫动态绑定。
多态性是oop中的一个重要特性,主要是用来实现动态连编的,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。
引用变量的两种类型:编译时类型(模糊一点,一般是一个父类),由声明时的类型决定。
运行时类型(运行时,具体是哪个子类就是哪个子类),由实际对应的对象类型决定。
多态存在的三个必要条件:要有继承,要有方法重写,父类引用指向子类对象。


抽象类为所有子类提供了一个通用模板子类可以在这个模板基础上进行扩展。
通过抽象类,可以避免子类设计的随意性。通过抽象类我们就可以做到严格限制子类的设计,使子类之间更加通用。
要点:1、有抽象方法的类只能定义能抽象类
2、抽象类不能实例化,及不能用new来实例化抽象类。
3、抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4、抽象类只能用来继承。
5、抽象方法必须被子类实现。


接口可以更加规范的对子类进行约束,全面的实现了:规范和具体实现的分离。
接口就是规范,定义的是一组规则体现了"如果你是...必须能..."的思想。接口的本质是契约


数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们。
数组三特点:1、其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。如果越界 则报:ArrayIndexOutofBoundsException 2、其元素必须是相同类型,不允许出现混合类型。 3、数组中的元素可以是任何数据类型,包括基本类型和引用类型。
数组属于引用类型。
一堆数组的声明方式有两种:type[] arr_name;   type arr_name[]
默认初始化:数组元素相当于对象的成员变量,默认值跟成员变量的规则一样。数字0,布尔false,char\u0000
动态初始化:for(int i=0;i<a.lenght;i++) {a[i]=i*12}
静态初始化:int c[]={12,21,55,78}(长度4,索引范围[0-3])。

Java字符串就是Unicode字符序列,例如串"java"就是四个Unicode字符j、a、v、a组成的。
Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。

StringBuilder,测试可变字符序列。线程不安全,效率高。   StringBuffer(线程安全,效率低)
不做描述,字符数组长度初始为16;
Arraylist是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括null在内的所有元素,此类还提供一些方法来操作内部用来存储列表的数组的大小。

猜你喜欢

转载自blog.csdn.net/zysjava/article/details/80092655
今日推荐