JAVA继承的问题
发布网友
发布时间:2022-05-16 05:35
我来回答
共3个回答
热心网友
时间:2023-10-12 18:10
1.父类可以创建子类的实例,子类不可以创建父类的实例,就像二楼那位仁兄举得例子一个道理。
2.父类创建子类的实例的好处一是在于对父类代码的重用,二是可以通过创建不同类型的子类对象对父类的相同功能进行不同的实现方式!
3.JAVA语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。
Animal animal = new Dog();
Dog dog = (Dog)animal; //向下转型,把Animal类型转换为Dog类型
Creature creature = animal;//向上转换,把Animal类型转换为Creature类型;
4.对于向下转换,必须进行强制转换,方法和变量的调用时需要根据动态绑定规则!
比如:Animal animal = new Dog();
绑定规则如下:a.实例方法与引用变量实际引用的对象的方法绑定,就是说你调用的实例方法是属于哪个类的,就调用哪个类的方法。
b.静态方法与引用变量所声明的类型的方法绑定。就是说所调用的静态方法,跟Animal的静态方法绑定。
c.成员变量(包括静态变量和实例变量)与引用变量所声明的类型的成员变量绑定。
5.final可以,private也可以,因为private类型的方法默认是final类型的。他们所修饰的方法不能被子类的方法覆盖。也就没办法继承这个方法了!
子类可以调用父类的对象,但是需要强制转换!子类本身就继承父类,可以把子类看做是父类的对象。
个人建议你可以找一本Java方面的书,研究一下“继承”、“修饰符”这两章节,这样会对这个有一个很系统的了解!我买的是孙卫琴老师编写的《Java面向对象编程》,觉得讲得很详细,通俗易懂!呵呵……希望对你有所帮助!
热心网友
时间:2023-10-12 18:10
1、不能 比如父类是水果 子类是橘子 你 可以说橘子是水果 但是你能说水果是橘子吗?明显不能!
2、增强代码的可维护性 如果子类变更,你的代码只需要最少的变动
3、可以将子类对象强转为父类对象 但不可将父类对象强转为子类对象 道理同1
4、取决于她所建立的实例 这是java得动态绑定特性
5、加final 可以 加private也可以 对父类的静态方法不好用 没明白你什么意思
是父类不能调用子类的对象吧 ??
热心网友
时间:2023-10-12 18:11
后一个不正确,因为父类可以有很多的了类,你这样写就是错误的,前面一个这样写是对的,这指的是JAVA的多态。子类转换为父类是自动转换,而子类需要强制转换,并且前面声明的时候就得先由子类对像指像父类才行。