继承 1--子类覆盖父类的方法(覆写),那么在调用子类中覆写的方法时, 在内存中,子类的方法覆盖了父类的方法(方法的覆盖)。 2--属性的覆盖时,在内存中,子类继承的属性有一个内存块,父类的属性也有 有一个内存快,子类属性在内存中没有覆盖父类的属性(属性的覆盖)。
如果父类指向子类的空间,那么父类只能调用子类继承过去的方法,对于子类自己的方法将无法调用。 如果子类指向子类的空间,那么子类可以调用继承下来的父类的方法和自己的方法。
重载: 1--方法名相同,参数列表不同(个数,类型,顺序)。不能根据名称判定 2--方法的作用域和返回类型可以不同。 public void aaa(); public void aaa(int i); private void aaa(int i,int j); ==>正确 public void aaa() public int aaa(); ==>错误
覆盖(重写): 1--方法名必须相同,参数列表必须相同,返回类型必须相同 2--方法的作用域可以不同(注意权限问题)
java中重写,重构,覆盖是同一个意思。
多态 子类继承具体父类 1--子类必须覆写父类的方法,才实现多态 子类继承抽象类 (如果子类实现了抽象类的全部方法,则子类为不是抽象类,如果子类只要有一个没有实现父类的抽象方法,那么则为抽象子类) 1--子类必须覆写父类的方法或者实现父类的抽象方法,才实现多态。 子类实现接口 1--子类实现接口中的方法,才实现多态(100%)
静态函数是不支持“多态”的,静态函数根据对象的声明类型调用,非静态函数则根据实际对象类型进行调用。
抽象类与接口的区别: 1--接口中所有的方法都必须是抽象的方法,这些方法留给实现接口的类来实现,而抽象类既可以有抽象的方法,也可以有实现的方法。 2--抽象类偏重于属性,接口偏重于行为。 3--抽象类实现接口,不需要显示的声明接口中的抽象方法,不需要完全实现接口中的方法。 抽象类继承抽象类,可以不显示的写出抽象方法,但直到非抽象的子类必须实现所有的抽象方法。
抽象类中可以有静态的方法,而接口中不允许有静态的方法。
抽象类可以继承抽象类和非抽象类,可以实现接口(不需要所有方法),但不可以继承接口 接口可以继承接口,但不可以实现接口。
JAVA抽象类的理解: 1、普通的JAVA类也可以在CLASS前加ABSTRACT声明为抽象,只不过此时的该类不再可以实例化。 2、如果一个类里有一个以上的抽象方法,则该类必须声明为抽象类,该方法也必须声明为抽象。 3、抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,备继承类扩充。
接口中的方法如果没有给作用域,则默认为public abstract(),如果给作用域的话,只能给public或者public abstract,也是public abstract相当于没有意义 抽象类中的方法如果没有给作用域,则默认作用域权限跟普通类一样,如果给作用域的话,除了private其它都可以给。
ArrayList的增长方式(异步) 1--默认大小10个元素,下标0--9 2--超过10个元素,则自动增长到16个元素,下标0-15 3--以后没次超过都等于(当前大小为a)a+a/2+1 的大小。 10--16--25--38.......
Vector同步效率低,安全性高,增加同倍。10-20-40-80-......
final 1--final作用于方法,则方法可以被重载(继承可以重载,不继承也可以重载),但是方法不能被覆盖。 final作用于变量必须初始化,在继承关系中,变量可以被覆盖,不过感觉没有意义。 2-- finally 在异常处理时提供 finally 块来执行任何清除操作。
HashMap,HashTable,HashSet. 1--HashMap除了不同步和允许使用null之外,HashMap类和Hashtable大致相同。 HashMap不保证映射的顺序,特别是它不保证该顺序恒久不变。
|