求解

求解
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;
}

img


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() {

    }
}

执行结果

img

题目的意思应该是要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

如有帮助,请采纳,十分感谢!

你希望以什么语言实现?提问时一定要说明白,语言种类很多,大部分都能实现你的功能。