小明是对象,小明既是学生,也是人,多态是针对对象来说
-
多态的格式
-
为什么要学多态呢?为了避免两次new对象,这样子类和父类这样就都能使
用,下方进行多态的实验可以正面多态可以代码更少更方便
-
创建形式就是父类 对象名=new Zi();调用时会优先用子类方法(若子类和父类有重名时会用子类,若没有重名那么调用子类方法会错误,解决方法往下看,涉及到了向上转型和向下转型),
-
若对象调用子类没有的方法而父类有,那么会向父类使用它有的方法,下面为截图
,
,
-
调用成员变量与上部分调用方法不同,变量不可以重载覆盖,子类父类就是变量名相同,值可以不同。直接访问对象变量。看对象名左边是谁则调用谁的变量,若左边没有这个变量,那么会向上寻找,不会找右边的子类的变量,
-
间接调用的话看这个方法属于哪个类则调用哪个类里面的变量,
-
调用子类特有方法出错 ,截图
-
对出错问题进行解决,用向下转型的方法
这下面一条语句就是向下转型的格式。show3()方法可以调用了 -
总结:多态emmm,比如自己,既是学生也是人,学生作为子类向上转型成为人,那么学生当然具备人的性质,就是可以直接调用人的方法,但是人不一定都是学生,不可以调用学生特有的方法。 向下转型人变成了学生类型对象,那么调用学生特有的属性当然不是问题,
-
还有一点,向下转型一定要用Instanceof 判断一下,否则子类太多,可能会出错
-
子类各类都要继承父类,否则没法在实现类创建向上转型
-
又出错了,
这里要定义静态方法,要不软出错,应该里面的内容已经存在内存中了,静态方法必须要用
错误,不是以下原因,是因为pet实在静态方法中,传递到外面的也必须是静态方法来接受
正确,instanceof会传递一个true或false -
哈哈,我他妈成功了,不得不说我悟性真高,下面是主方法
,usb抽象方法,键盘实现usb抽象方法,,鼠标实现usb方法,电脑的功能方法 -
总结1,usb’接口在电脑功能方法代码中要有方法,用来在主方法区创建对象代入进去,括号内要记得把接口加进去,(括号内部其实也是一种赋值,什么类型的变量等于什么类型的变量,交换的过程就是对象的赋值)
-
总结2,若鼠标键盘有不同的功能,不单单只有打开关闭功能,那还能向上面用吗?不行,这就用倒了向下转型,在电脑功能区增加两个if/else if判断方法,用来判断传进来的是键盘还是鼠标,那么接口类代码如何写,电脑功能区怎么写,主方法区怎么写?这样吗?错误
,
应该这样写,用乡下转型来实现特有的方法,无须再接口写方法再实现,向下转型就是解决这个问题的