「java子类中重写」java子类重写tostring

博主:adminadmin 2023-01-08 15:39:09 1526

本篇文章给大家谈谈java子类中重写,以及java子类重写tostring对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 子类重写了一个方法,如何在父类中调用?

java子类继承父类、方法的重写(覆盖)在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。格式:class子类 extends父类

java 中子类中 重载重写

java是依靠方法中传递的参数来识别是否重载的。

这个是重载,

比如

public Class Eat{

Eat(){//默认构造器

}

Eat(String str){//可以实现某种功能的构造器

}

Eat(Object obj){//接受任何参数的构造器

}

}

其实,在java里,返回值并不能确定一个方法,只有通过方法的参数才能确定一个方法。

所以,这是重载,不是重写。

java的子类如何重写父类的方法?

java中重写父类的方法只需写出与父类一模一样的这个方法即可,包括方法名,参数类型,参数值,返回值。

事例代码如下:

public class Demo extends FDemo{

public static void main(String[] args) {

a();//运行输出b

}

static void a(){

System.out.println("b");

}

}

class FDemo{

static void a(){

System.out.println("a");

}

}

java重写父类方法后,原有的父类里面的实现全部清空,变为重写后的内容。

JAVA中子类重写父类的方法,怎么写,什么要求

1.父类的方法不能降级,同级的话就要覆盖,例如public方法不能在子类中被声明为protected或者private(子类重载除外),否则会有

Cannot reduce the visibility of the inherited method from Father的编译错误。

2.父类的方法可以任意升级,但升级只有两种方式,要么覆盖,要么重载,覆盖就是方法体完全一样,重载则是参数必须改变,方法名称不变。

import java.lang.reflect.Method;  

  

class Father{  

    int a;  

    protected int b = 5;  

    protected void funcpro(){  

        //父类的保护方法,子类能够访问,但子类自身没有  

        System.out.println("father funcpro");  

    }  

    public void funcpub(){  

        //父类公有方法,子类直接继承  

    }  

    private void funcpri(){  

        //父类私有方法,子类不可见  

    }  

}  

public class TestOveride extends Father {  

  

    /** 

     * @param args 

     */  

    //父类保护方法的重写  

//  public void funcpro(){  

//      //子类自己可以这样定义,将会覆盖父类protected方法  

//      System.out.println("子类的func方法");  

//  }  

  

//  protected void funcpro(){  

//  //ok  

//}  

      

//  public short funcpro(){  

//      //illegal    父类的protected和public方法在子类中是可见的,试想一下,如果编译器认为这个方法体正确,  

        //那么子类调用funcpro的时候究竟调用哪个呢?这样没有能构成重载  

//  }  

  

//  private void funcpro(){  

//      //illegal  

//  }  

    

    private void funcpro(int a){  

        //这是方法重载,不会报错  

        System.out.println("sun funcpro");  

    }  

  

    //父类公有方法的重写  

  

//  private void funcpub(){  

//      //illegal:Cannot reduce the visibility of the inherited method from Father   

//  }  

      

//  protected void funcpub(){  

//      //illegal  Cannot reduce the visibility of the inherited method from Father  

//  }  

      

//  public void funcpub(){  

//      //ok  

//  }  

      

//  public int funcpub(){  

//      //illegal 和父类的返回值不匹配  

//  }  

  

//  public int funcpub(int i){  

//      //ok 子类构成重载  

//      return 1;  

//  }  

  

    //父类私有方法的重写  

  

//  public void funcpri(){  

//      //ok  

//  }  

      

//  protected void funcpri(){  

//      //ok  

//  }  

  

//  private void funcpri(){  

//      //ok  

//  }  

      

    public static void main(String[] args) {  

        // TODO Auto-generated method stub  

        TestOveride testOveride = new TestOveride();  

        Class class1 = testOveride.getClass();        

        try {  

            Method[] methods = class1.getMethods();  

            System.out.println("子类中的所有方法:");  //可以看到,并没有父类的funcpro方法  

            for(Method m:methods){  

                System.out.println(m);  

            }  

            System.out.println("子类调用父类的protected 方法:");  

            testOveride.funcpro();  

            System.out.println("子类调用自己的func方法:");  

            testOveride.funcpro(1);  

            System.out.println("子类调用父类的字段");  

            System.out.println(testOveride.b);  

        }catch(Exception e){  

            e.printStackTrace();  

        }  

  

    }  

  

}

Java上转型变量调用子类重写的方法时,方法中调用的属性是被隐藏的还是子类重写的变量?

在 Java 中,当使用父类的引用变量调用子类的重写方法时,被调用的方法是子类重写的方法。这是因为在 Java 中,方法的调用是在运行时进行的,称为动态绑定,它允许在运行时根据对象的实际类型来调用方法。

举个例子,假设你有一个父类 Person 和一个子类 Student,其中父类有一个方法 getName,子类重写了该方法,如下所示:

class Person {

protected String name;

public String getName() {

return name;

}

}

class Student extends Person {

@Override

public String getName() {

return "Student: " + name;

}

}

然后你可以这样使用父类的引用变量调用子类重写的方法:

Person person = new Student();

System.out.println(person.getName());

这将输出 "Student: [name]",因为调用的是子类重写的方法。

另外,在调用重写的方法时,方法中使用的属性也是子类重写的属性。例如,在上面的例子中,如果你在子类中重写了 name 属性,那么调用 getName 方法时将使用子类重写的 name 属性。

在 Java 中,如果一个子类重写了父类的方法,则可以使用父类的引用变量调用子类的重写方法。这种调用方法的机制被称为动态绑定,它允许在运行时根据对象的实际类型来调用方法。

你可以使用父类的引用变量来引用子类的对象,例如:

Person person = new Student();

在这个例子中,person 是一个 Person 类型的引用变量,但它实际上引用了一个 Student 类型的对象。当你使用这个引用变量调用方法时,将调用子类重写的方法,而不是父类中定义的方法。

例如,假设你有一个父类 Person 和一个子类 Student,其中父类有一个方法 getName,子类重写了该方法,如下所示:

class Person {

protected String name;

public String getName() {

return name;

}

}

class Student extends Person {

@Override

public String getName() {

return "Student: " + name;

}

}

然后你可以这样使用父类的引用变量调用子类重写的方法:

Person person = new Student();

System.out.println(person.getName());

这将输出 "Student: [name]",因为调用的是子类重写的方法。

另外,在调用重写的方法时,方法中使用的属性也是子类重写的属性。例如,在上面的例子中

java子类中重写的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java子类重写tostring、java子类中重写的信息别忘了在本站进行查找喔。