java继承的时候 子类想要给父类的值赋值 能否super.name = '123'
时间: 2024-12-04 20:29:57 浏览: 15
在 Java 中,子类可以通过 `super` 关键字访问并修改父类的属性或方法。如果你想在子类中给父类的变量赋值,可以直接使用 `super.name = '123';` 这样的语法。然而,如果这个变量是 final 或者声明为私有(private)的,那么你就无法直接赋值,因为 final 变量不允许在运行时更改其值,而私有变量则只能通过构造函数或getter/setter方法进行访问。
此外,如果你想要覆盖父类的属性,通常会重写 setter 方法来改变值,例如:
```java
public class ParentClass {
private String name;
}
public class ChildClass extends ParentClass {
public void setName(String newName) { // 重写setter方法
super.name = newName; // 使用super来调用父类的setter
}
}
```
在这种情况下,你可以创建 ChildClass 的实例,并通过 `setName()` 方法给 `name` 赋值。
相关问题
设有代码如下: public class person {String name; int age;public String introduce() {return ("I am a person!"); class student extends person { public student(String name,int age) {super.name=name; super.age=age; @Override public String introduce() { return ("I am a student!"); } } class worker extends person { public worker(String name,int age) {super.name=name;super.age=age; @Override public String introduce() { return("I am aworker!"); 1.试分析以上代码体现了面向对象程序设计的何种特点,这种特点对软件测试有何种影响。 2.试设计针对以上代码的测试脚本。
1. 以上代码体现了继承、多态和方法重写等面向对象程序设计的特点。子类继承了父类的属性和方法,并且可以对父类方法进行重写,达到多态的效果。这种特点对软件测试有着至关重要的影响,因为在测试过程中需要保证继承和重写的正确性,以及多态的正确运行。
2. 针对以上代码的测试脚本可以包括以下几个方面:
- 对于person类,测试属性的初始化是否正确;
- 对于student类和worker类,测试构造函数的参数传递是否正确;
- 对于person类、student类和worker类,测试introduce方法的返回值是否正确;
- 对于student类和worker类,测试是否成功重写了introduce方法;
- 测试多态的正确性,即将student对象和worker对象分别赋值给person类型的变量,并测试调用introduce方法的结果是否符合预期。
具体的测试用例可以根据具体需求进行设计,例如:
- 对于person类,测试属性的初始化是否正确:
```
person p = new person();
assert(p.name == null);
assert(p.age == 0);
```
- 对于student类和worker类,测试构造函数的参数传递是否正确:
```
student s = new student("Tom", 18);
assert(s.name.equals("Tom"));
assert(s.age == 18);
worker w = new worker("Jerry", 25);
assert(w.name.equals("Jerry"));
assert(w.age == 25);
```
- 对于person类、student类和worker类,测试introduce方法的返回值是否正确:
```
person p = new person();
assert(p.introduce().equals("I am a person!"));
student s = new student("Tom", 18);
assert(s.introduce().equals("I am a student!"));
worker w = new worker("Jerry", 25);
assert(w.introduce().equals("I am a worker!"));
```
- 对于student类和worker类,测试是否成功重写了introduce方法:
```
person p1 = new student("Tom", 18);
assert(p1.introduce().equals("I am a student!"));
person p2 = new worker("Jerry", 25);
assert(p2.introduce().equals("I am a worker!"));
```
- 测试多态的正确性,即将student对象和worker对象分别赋值给person类型的变量,并测试调用introduce方法的结果是否符合预期:
```
person p1 = new student("Tom", 18);
assert(p1.introduce().equals("I am a student!"));
person p2 = new worker("Jerry", 25);
assert(p2.introduce().equals("I am a worker!"));
```
java子类怎么用父类赋值了的成员
在Java中,子类可以继承父类的成员变量和方法。如果父类中的成员变量被声明为public或protected,那么子类可以直接使用父类的成员变量。如果父类的成员变量被声明为private,那么子类不能直接访问父类的成员变量。
如果父类中的成员变量被声明为private,但是提供了getter和setter方法,子类可以通过这些方法访问父类的成员变量。例如,假设父类有一个私有成员变量name,子类可以通过调用父类的getName()方法获取这个成员变量的值。
另外,如果子类中定义了与父类中同名的成员变量,那么子类的成员变量将会隐藏父类的成员变量。如果需要使用父类的成员变量,可以使用super关键字来引用父类的成员变量。例如,假设父类有一个成员变量name,子类也有一个成员变量name,子类可以通过super.name来访问父类的成员变量。
阅读全文