【Java每日一题】——第三十四题:设计一个学生类Student和它的一个子类Undergraduate(2023.10.20)

🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

欢迎收看,希望对大家有用!

目录

🎯问题:

🎯 答案:

💛废话文学:Java的优势:


🎯问题:

(1)定义学生类Student,定义其成员变量:姓名(String name)、年龄 (int age),定义无参构造方法和带两个参数构造方法,定义以上成员变量对应的getXxx()/setXxx()方法,定义一个show()方法显示Student对象的成员变量信息;

(2)定义本科生类Undergraduate,该类继承Student类,定义其成员变量:学位(String degree),定义无参构造方法和带3个参数的构造方法,定义以上成员变量对应的getXxx()/setXxx()方法,重写父类的show()方法,用于显示Undergraduate对象的成员变量信息;

(3)在测试类Demo中分别创建Student对象和Undergraduate对象,调用它们的show()。测试结果如下:

🎯 答案:

package file3;
class Student {
	private String name;
	private int age;
	public Student() {
		super();
	}
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void show() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
	}
}
class Undergraduate extends Student{
	private String degree;

	public Undergraduate() {
		super();
	}
	public Undergraduate(String name, int age, String degree) {
		super(name, age);
		this.degree = degree;
	}
	
	public String getDegree() {
		return degree;
	}
	public void setDegree(String degree) {
		this.degree = degree;
	}
	@Override
	public void show() {
		// TODO Auto-generated method stub
		System.out.println("姓名:"+getName());
		System.out.println("年龄:"+getAge());
		System.out.println("学位:"+getDegree());
	}
}

public class StudentTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student st1=new Student("冯绍峰",23);
		Undergraduate un1=new Undergraduate("赵丽颖",27,"学士");
		st1.show();
		System.out.println("-----------------");
		un1.show();
	}
}

💛废话文学:
Java的优势:

跨平台性: Java是一种跨平台的编程语言,即一次编写,到处运行。Java程序在不同的操作系统上具有很高的移植性,这使得开发人员能够通过Java开发应用程序,无需担心底层操作系统的差异。

面向对象: Java是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性。这种编程范式使得代码可以更加模块化、可重用,并且有助于提高代码的可维护性和可扩展性。

强大的生态系统: Java拥有丰富的标准库和第三方库,提供了各种功能强大的工具和框架,如Spring、Hibernate和JUnit等。这些工具和框架使得Java开发人员能够更加高效地开发应用程序,并提供了解决特定问题的解决方案。

多线程支持: Java内置了对多线程编程的支持,使得开发人员可以轻松地创建并发应用程序。多线程编程可以有效地利用多核处理器的性能,并提高程序的响应速度和吞吐量。

安全性: Java拥有严格的安全机制,包括字节码验证、安全管理器和安全沙箱等,可以防止恶意代码对系统的破坏。这使得Java成为开发安全性要求较高的应用程序的理想选择。
 

### 回答1: (2)student类有一个构造函数,用于初始化姓名和年龄属性; (3)student类有一个公有的成员函数printInfo(),用于输出姓名和年龄属性; (4)本科生类继承自student类,增加了一个学号(id)属性,访问权限为private; (5)本科生类有一个构造函数,用于初始化姓名、年龄和学号属性; (6)本科生类有一个公有的成员函数printInfo(),用于输出姓名、年龄和学号属性。 代码示例: class student { protected: string name; int age; public: student(string n, int a) : name(n), age(a) {} void printInfo() { cout << "姓名:" << name << endl; cout << "年龄:" << age << endl; } }; class undergraduate : public student { private: string id; public: undergraduate(string n, int a, string i) : student(n, a), id(i) {} void printInfo() { cout << "姓名:" << name << endl; cout << "年龄:" << age << endl; cout << "学号:" << id << endl; } }; ### 回答2: 学生类Student)和其子类——本科生类(Undergraduate)都是面向对象编程的基础概念之一,其目的是为了模拟现实生活中的学生群体,具有各自的属性和方法,以便更好地管理学生和实现相关功能。 首先,我们需要创建一个学生类Student),其中包含姓名(name)和年龄(age)两个属性,这两个属性的访问权限应该是protected,以便让子类可以继承这些属性。在该类中,我们还可以添加其他属性,例如学号(id)、性别(gender)等,以更好地描述学生。 接下来,我们需要创建一个本科生类(Undergraduate),从学生类Student)中继承相关属性。除了学生类Student)的属性外,本科生类(Undergraduate)可以具有额外的属性,例如专业(major)、班级(class)等。另外,本科生类(Undergraduate)可能需要重写(override)一些学生成员方法,以适应特定的需求。 除了属性以外,还必须实现一些默认的方法,例如toString()方法或equals()方法等,用于打印出学生信息或比较学生之间的不同之处。 此外,还可以为学生类Student)和本科生类(Undergraduate)添加一些额外的方法,例如注册课程(registerCourse)、计算GPA等,以便学生类Student)和本科生类(Undergraduate)可以更好地管理和维护学生信息。 最后,创建学生类Student)和本科生类(Undergraduate)的构造方法,以便可以在创建学生实例时按指定格式初始化学生属性。 总之,设计一个学生类Student)和本科生类(Undergraduate)并不是太复杂,但在实现时需要考虑多个方面,例如属性的继承关系、方法的重写以及如何在构造函数中初始化属性等。通过认真思考和实践,可以创建一个非常优秀的学生类和本科生类,并在实际应用中发挥其优势。 ### 回答3: (2)student类有一个构造函数,可以输入姓名和年龄并初始化对象; (3)student类有一个纯虚函数display(),子类必须实现该函数; (4)本科生类继承自student类,增加一个学号(id)属性,访问权限为private; (5)本科生类有一个构造函数,可以输入姓名、年龄和学号并初始化对象; (6)本科生类实现了display()函数,输出学生信息。 设计学生类及本科生类的头文件如下: class student { protected: string name; int age; public: student(string n, int a); virtual void display() = 0; }; class undergraduate : public student { private: int id; public: undergraduate(string n, int a, int i); void display(); }; 具体实现可以参考下面的代码: student::student(string n, int a) { name = n; age = a; } undergraduate::undergraduate(string n, int a, int i) :student(n, a) { //调用父类构造函数初始化name和age属性 id = i; } void undergraduate::display() { cout << "姓名:" << name << endl; cout << "年龄:" << age << endl; cout << "学号:" << id << endl; } 这个类的设计符合面向对象的封装、继承和多态原则,使得代码可读性高、易于维护和扩展。在实际的学生管理系统中,可以使用这个类的对象来表示学生,实现学生信息的录入、查询、修改和删除等功能,为学生的教育和管理提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y小夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值