「java子类中重写」java子类重写tostring
本篇文章给大家谈谈java子类中重写,以及java子类重写tostring对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 子类重写了一个方法,如何在父类中调用?
- 2、java 中子类中 重载重写
- 3、java的子类如何重写父类的方法?
- 4、JAVA中子类重写父类的方法,怎么写,什么要求
- 5、Java上转型变量调用子类重写的方法时,方法中调用的属性是被隐藏的还是子类重写的变量?
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子类中重写的信息别忘了在本站进行查找喔。