1:理解对象创建的过程(静态代码块(父类、子类静态代码块)、构造父类对象完毕、成员变量(默认初始化、实例初始化)??、实例代码块、构造方法)
2:父类引用指向子类对象(向上转型)
但是:
父类引用指向子类对象,是为了实现多态 而向上强制类型转换是一个多余的过程,没有任何意义 向下强制类型转换很有用
3:动态绑定:是指当调用一个对象的某个方法(或成员函数)时,需要到运行的时候根据对象的具体类型决定执行那个方法体,也就是所谓的多态4:类型之间的转换:向上转型主要用于继承抽象类和实现接口上,体现了面向对象的编程思想; 可以转给任何一个父类
向下转型就是对父类的强制类型转换(不可控) 可以转给任何一个子类(不可控)
5:多态的作用:1:有利于扩展 2:作为参数利用
1) 如果没有多态,参数是原始类型,导致代码到处要强转!!
2)实参允许原始类型或子类
3) 接口也是父类.String str = "实际参数";
test(str);//使用了多态!
test((Object)str);//使用了多态!
6:抽象方法:
1、不能私有化!
2、声明的时候不能写成默认的!!
1)不重写报错!却不允许重写!!太难侍候了!不能静态!
天生就是被强制重写的!
7:有抽象成分的类必定是抽象类
1:普通的类是完全具体
2:抽象的类是半抽象半具体(不能直接实例化(只能实例化比他更具体的类型)、天生就是被别人继承的(外部类:正常继承) 匿名内部类,直接new {}实现)实例化时必须是完全具体的
8:接口:1:是完全抽象的 2:java不允许多继承 3:多态调用父类的方法时,会引起歧义 3:接口包含(方法(默认修饰词是public abstract可以省略)、成员变量(就是常量) 4:对接口的理解)
9:instanceof(可控)
1:判断对象是否属于某类型
2:什么时候可以使用(存在继承关系时)
3:什么时候为true(本类、父类、接口)
4:只要为false就不能强转