(2)定义泛型类St udent实现MyInterface接口,定义 属性name和age, 两个都是泛型类 型,定义包含2个参数的构造方法、 定义针对name和 age属性的set和g et方法,定义showlnfo方法输出na me和age值。
时间: 2024-05-13 19:13:39 浏览: 71
好的,这是一个Java编程问题,可以直接回答。以下是代码实现:
```java
public class Student<T, S> implements MyInterface<T, S> {
private T name;
private S age;
public Student(T name, S age) {
this.name = name;
this.age = age;
}
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
public S getAge() {
return age;
}
public void setAge(S age) {
this.age = age;
}
public void showInfo() {
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
interface MyInterface<T, S> {
void showInfo();
}
```
希望能够帮助到你。
相关问题
java中定义两个方法,一个方法为teacher,功能是输出“教师:讲课、批作业”;一个方法为st udent,功能是输出“学生:上课、考试”,然后在主方法中调用两个方法。
在Java中,你可以通过创建一个公共父类或者接口,让Teacher和Student这两个角色都继承或实现这个父类或接口,然后在这个共同的结构中定义`teacher()`和`student()`方法。这里是一个简单的例子:
```java
// 定义一个公共接口
interface Role {
void activity();
}
// 实现Teacher接口
class Teacher implements Role {
@Override
public void activity() {
System.out.println("教师:讲课、批作业");
}
}
// 实现Student接口
class Student implements Role {
@Override
public void activity() {
System.out.println("学生:上课、考试");
}
}
public class Main {
public static void main(String[] args) {
// 创建Teacher对象并调用activity方法
Role teacherObj = new Teacher();
teacherObj.activity();
// 创建Student对象并调用activity方法
Role studentObj = new Student();
studentObj.activity();
// 如果你有多种类型的对象实例,可以直接将它们赋值给Role类型的变量,这就是多态
}
}
```
在`main`方法中,我们不需要提前知道具体的对象类型(Teacher或Student),只需要Role类型的引用就能调用到对应的`activity`方法,这就是多态性的体现。
(1) 编写一个Student类,包含name和age属性,并完成封装 (2) 提供Student类的无参、有参构造方法。 (3) 在Student类中,重写toString()方法,输出age和name的值。 (4) 在Student类中,重写hashCode()和equals()方法 A、 hashCode()的返回值是name的hash值与age的和。 B、 equals()判断对象的name和age是否相同,相同则返回true不同返回false。 (5) 最后编写一个测试类TestSt
udent,测试Student类的功能。
下面是代码示例:
```
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Name: " + name + ", Age: " + age;
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Student)) {
return false;
}
Student s = (Student) obj;
return this.name.equals(s.getName()) && this.age == s.getAge();
}
}
public class TestStudent {
public static void main(String[] args) {
Student s1 = new Student("Tom", 18);
Student s2 = new Student("Tom", 18);
Student s3 = new Student("Jerry", 20);
System.out.println("s1: " + s1.toString());
System.out.println("s2: " + s2.toString());
System.out.println("s3: " + s3.toString());
System.out.println("s1 equals s2: " + s1.equals(s2));
System.out.println("s1 equals s3: " + s1.equals(s3));
System.out.println("s1 hashCode: " + s1.hashCode());
System.out.println("s2 hashCode: " + s2.hashCode());
System.out.println("s3 hashCode: " + s3.hashCode());
}
}
```
输出结果如下:
```
s1: Name: Tom, Age: 18
s2: Name: Tom, Age: 18
s3: Name: Jerry, Age: 20
s1 equals s2: true
s1 equals s3: false
s1 hashCode: 991
s2 hashCode: 991
s3 hashCode: 1021
```
可以看到,重写的toString()方法输出了正确的结果,重写的hashCode()和equals()方法也能正确判断对象是否相等。同时,测试类中也验证了不同对象的hashCode()值不同。
阅读全文