Java参数传递父子类
Java是一种面向对象的编程语言,支持继承和多态。在Java中,参数的传递方式有两种:值传递和引用传递。本文将介绍Java中参数传递的概念,并探讨在父子类之间传递参数的情况。
参数传递方式
在Java中,方法的参数传递方式有值传递和引用传递两种。当传递基本数据类型参数时,实际上是将参数的值拷贝一份传递给方法。而当传递引用类型参数时,实际上是将参数的地址(引用)拷贝一份传递给方法。
值传递
值传递是指将参数的值拷贝一份传递给方法。在方法内部对参数进行修改不会影响原始的参数值。下面是一个简单的示例代码:
public class Main {
public static void main(String[] args) {
int num = 10;
changeValue(num);
System.out.println(num); // 输出:10
}
public static void changeValue(int value) {
value = 20;
}
}
在上述代码中,changeValue
方法接收一个int
类型的参数value
。在方法内部,将value
的值修改为20,但是在main
方法中输出num
的值时,仍然是10。
引用传递
引用传递是指将参数的地址(引用)拷贝一份传递给方法。在方法内部对参数进行修改会影响原始的参数。下面是一个简单的示例代码:
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
changeValue(sb);
System.out.println(sb.toString()); // 输出:Hello World
}
public static void changeValue(StringBuilder sb) {
sb.append(" World");
}
}
在上述代码中,changeValue
方法接收一个StringBuilder
类型的参数sb
。在方法内部,使用append
方法将参数sb
的值修改为Hello World
,并在main
方法中输出sb
的值时,结果也是Hello World
。
父子类之间的参数传递
在Java中,子类可以继承父类的属性和方法。在父子类之间传递参数时,可以通过方法重写和多态实现。
方法重写
方法重写是指子类重写(覆盖)父类的方法。当子类重写了父类的方法后,可以通过父类的引用调用子类的方法。下面是一个简单的示例代码:
public class Animal {
public void move() {
System.out.println("Animal can move");
}
}
public class Dog extends Animal {
@Override
public void move() {
System.out.println("Dog can run and walk");
}
public void bark() {
System.out.println("Dog can bark");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.move(); // 输出:Dog can run and walk
}
}
在上述代码中,Animal
类有一个move
方法,子类Dog
继承了Animal
类,并重写了move
方法。在main
方法中,通过父类的引用animal
调用move
方法时,实际上调用的是子类Dog
的move
方法。
多态
多态是指同一个方法可以根据不同的对象产生不同的行为。当父类的引用指向子类的对象时,可以通过父类的引用调用子类的方法。下面是一个简单的示例代码:
public class Animal {
public void move() {
System.out.println("Animal can move");
}
}
public class Dog extends Animal {
public void move() {
System.out.println("Dog can run and walk");
}
public void bark() {
System.out.println("Dog can bark");
}
}
public class Cat extends Animal {
public void move() {
System.out.println("Cat can climb and jump");
}
public void meow() {
System.out.println("Cat can meow");
}
}
public class Main {
public static void main(String[] args) {