public class DemoTest {
public static void main(String[] args) {
Person worker = new Worker();
Person student = new Student();
}
}
abstract class Person{
protected String name;
protected int age;
abstract void speak();
abstract void walk();
}
class Worker extends Person{
private String salary;
@Override
void speak() {
}
@Override
void walk() {
}
}
class Student extends Person{
private String school;
@Override
void speak() {
}
@Override
void walk() {
}
}
题主应该想要的是C++的解决方案吧,望采纳
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
//两个纯虚函数
virtual void speak() = 0;
virtual void walk() = 0;
private:
string m_name;
int age;
};
class Worker :public Person
{
public:
//重写父类纯虚函数
void speak()
{
cout << "Work中speak函数调用" << endl;
}
void walk()
{
cout << "Work中walk函数调用" << endl;
}
private:
int m_salary;
};
class Student :public Person
{
public:
//重写父类纯虚函数
void speak()
{
cout << "Student中speak函数调用" << endl;
}
void walk()
{
cout << "Student中walk函数调用" << endl;
}
private:
string m_school;
};
int main()
{
//新建Worker和Student对象
Worker* w = new Worker;
Student* s = new Student;
//用父类Perosn的指针指向这两个对象
Person* p1 = w;
Person* p2 = s;
//调用
p1->speak();
p1->walk();
p2->speak();
p2->walk();
return 0;
}
public class Test {
public static void main(String[] args) {
Person worker = new Worker();
Person student = new Student();
worker.speak();
student.speak();
worker.Walk();
student.Walk();
}
@Data
static abstract class Person {
private String name;
private int age;
abstract void Speak();
abstract void Walk();
}
@Data
static class Worker extends Person {
private double salary;
@Override
void speak() {
System.out.println("worker speak");
}
@Override
void Walk() {
System.out.println("worker walked");
}
}
@Data
static class Student extends Person {
private String school;
@Override
void speak() {
System.out.println("student speak");
}
@Override
void Walk() {
System.out.println("student walked");
}
}
}
你好,望采纳!
Person worker = new Worker();//Person指向Worker
Person student = new Student();//Person指向Student
源码:
public class Test {
public static void main(String[] args) {
Person worker = new Worker();//Person指向Worker
Person student = new Student();//Person指向Student
worker.speak();
student.speak();
}
}
abstract class Person{
protected String name;
protected int age;
abstract void speak();
abstract void walk();
}
class Worker extends Person{
private String salary;
@Override
void speak() {
System.out.println("Worker speak");
}
@Override
void walk() {
}
}
class Student extends Person{
private String school;
@Override
void speak() {
System.out.println("Student speak");
}
@Override
void walk() {
}
}
执行结果
题目的意思应该是要C/C++语言实现,我本机现在只有java编译环境,给一个java版的答案。
C语言的虚函数对应java里面的抽象函数,多态的特性是通用的。代码如下 :
public class Answer7422955 {
public static void main(String[] args) {
Person worker = new Worker();
Person student = new Student();
worker.speak();
student.speak();
worker.walk();
student.walk();
}
@Data
static abstract class Person {
private String name;
private int age;
abstract void speak();
abstract void walk();
}
@Data
static class Worker extends Person {
private double salary;
@Override
void speak() {
System.out.println("worker speak");
}
@Override
void walk() {
System.out.println("worker walk");
}
}
@Data
static class Student extends Person {
private String school;
@Override
void speak() {
System.out.println("student speak");
}
@Override
void walk() {
System.out.println("student walk");
}
}
}
运行结果如下
worker speak
student speak
worker walk
student walk
如有帮助,请采纳,十分感谢!
你希望以什么语言实现?提问时一定要说明白,语言种类很多,大部分都能实现你的功能。