黑马程序员技术交流社区
标题:
多态
[打印本页]
作者:
张俊生
时间:
2013-6-13 19:18
标题:
多态
本帖最后由 风雨兼程 于 2013-6-14 08:56 编辑
建立子类对象后,想用父类的方法,不想让子类覆盖怎么办?
作者:
夏一站
时间:
2013-6-13 20:05
可以考虑使用静态static方法
class GrandPa
{
static void Method()
{
System.out.println("Hello, I am GrandPa!");
}
}
class Father extends GrandPa
{
static void Method()
{
System.out.println("Hello, I am Father!");
}
}
class Son extends Father
{
static void Method()
{
GrandPa.Method();// 这样可以调用GrandPa的Method
Father.Method();
System.out.println("And Son is followed!");
}
}
作者:
张俊生
时间:
2013-6-13 20:42
夏一站 发表于 2013-6-13 20:05
可以考虑使用静态static方法
class GrandPa
class Fu //父类对象
{
void Method()
{
System.out.println("Fu run!");
}
}
class Zi extends Fu //子类继承父类对象
{
void Method()
{
System.out.println("Zi run!");
}
}
class Demo
{
public static void main (String[] args)
{
Fu z = new Zi();
z.Method();
}
}
//运行结果是Zi run!我的意思是在这之后又想用父类的方法。
复制代码
作者:
张超
时间:
2013-6-13 20:49
定义一个父类对象的变量指向子类 Father f = new son();
作者:
神之梦
时间:
2013-6-13 22:10
风雨兼程 发表于 2013-6-13 20:42
看题内容,让我相到了私有,但是楼楼这个回答。。。。。
我想说创建父类对象吧
作者:
苑永志
时间:
2013-6-13 22:26
本帖最后由 苑永志 于 2013-6-14 00:29 编辑
楼主的意思是这样的吧:子类Son的方法中想要调用父类Father的方法,但是Son中不能重写(Override)方法。
如:Son如果能够使用Father的方法m1(),则改方法不能用private修饰;同时Son不能继承方法m1(),加上final修饰符即可。如下代码所示:
public class Son extends Father {
//编译报错,final方法不能被重写
/*@Override
public void m1(){
System.out.println("m1");
}*/
public void m2(){
m1();
}
public static void main(String[] args) {
new Son().m2();
}
}
复制代码
public class Father {
//该方法不能用private修饰,否则子类中无法直接访问
final void m1(){
System.out.println("m1");
}
}
复制代码
作者:
知行
时间:
2013-6-13 22:28
那就用反射吧,前提是我知道父类有一个不带参数的构造函数
package com.heima.duotai;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
Fu z = new Zi();
Class<Fu> clazz = (Class<Fu>) z.getClass().getSuperclass();
try {
Fu f =(Fu)clazz.newInstance();
f.Method();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
z.Method();
}
}
class Fu //父类对象
{
void Method()
{
System.out.println("Fu run!");
}
}
class Zi extends Fu //子类继承父类对象
{
void Method()
{
System.out.println("Zi run!");
}
}
复制代码
作者:
袁梦希
时间:
2013-6-14 01:29
如果问题已经解决 请把帖子的类型改为已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2