小弟不才,问大家一个基础问题:Son类继承Father类Father obj = new Son();
和
Son obj = new Son();有什么区别?
Father obj = new Son();有什么好处.还有比如: (接口)A a = new AImpl(接口A的实现类) 这样新建更 AImpl a =new AImpl();有什么区别,前者有什么优点?
和
Son obj = new Son();有什么区别?
Father obj = new Son();有什么好处.还有比如: (接口)A a = new AImpl(接口A的实现类) 这样新建更 AImpl a =new AImpl();有什么区别,前者有什么优点?
这个是实现多态要素之一,多态后就可以写出一段所有子类都通用的代码,当添加新的子类时,这段代码是不需要修改的。
比如:父类Person,子类Teacher,Student,方法method()
如果使用第2行,当改用Student的时候,那么第3行也需要改变
Person a = new Teacher();
//Teacher a = new Teacher();
a.method();
func(Cat cat){
System.out.println(cat.getName());
System.out.println(cat.getSex());
}
在方法体里会调用获取相关信息, 这时候你的上司说要求你再写一个能打印输出狗的信息的方法
func(Dog dog){
System.out.println(dog.getName());
System.out.println(dog.getSex());
}
基本是一样的代码,不过还是要重写一遍
其实你完全可以让Cat 和 Dog 实现Animal接口
不用关心传进来的是Cat还是Dog ,只要传进来的对象实现的Animal接口就行
可能传进来的是一个Bird 它还会有fly()方法 但是这都跟我们业务逻辑没有关系
我们关注的只是 它有getName()和getSex() 就行
Father obj = new Son();
Son类继承Father类,其实例的对象,可以去使用Father类中的一些属性和方法,但前提是这些属性和方法是非private修饰的,也就是说不是Father私有的属性和方法Son obj = new Son();
而如果son类不继承Father类,那么他就不能去使用Father的属性和方法,当然如果你去实例化Father类的话,可以使用father类公有的方法。
其实,这只是最直接的好处,以后你会慢慢学到,慢慢体会吧!