4.5 Java创建一个学生类

创建一个表示学生的实体类 Student,其中有学生姓名、性别和年龄信息。要求使用属性来表示学生信息,最终编写测试代码。

首先定义一个名为 Student 的类,代码如下:

 1 public class Student { 2 // 学生类 3 } 

在类中通过属性定义学生、性别和年龄,代码如下:
1 public class Student {
2 public String Name; // 学生姓名
3 public int Age; // 学生年龄
4 private boolean Sex; // 学生性别
5 }

 

在上述代码中将学生性别属性 Sex 设置为 private 作用域。为了对该属性进行获取和设置,还需要编写 isSex 和 setSex 方法。代码如下:
1 public boolean isSex() {
2 return Sex;
3 }
4 public void setSex(boolean sex) {
5 this.Sex = sex;
6 }

 

在 Student 类中添加 main() 方法,然后创建两个学生类的实例,并输出学生信息。最终代码如下:
 1 public static void main(String[] args) {
 2 Student zhang = new Student(); // 创建第一个实例
 3 zhang.Name = "张子同";
 4 String isMan = zhang.isSex() ? "女" : "男";
 5 System.out.println("姓名:" + zhang.Name + "性别:" + isMan + "年龄:" + zhang.Age);
 6 Student li = new Student(); // 创建第二个实例
 7 li.Name = "李子文";
 8 //li.Sex = true;
 9 li.Age = 15;
10 String isWoman = li.isSex() ? "女" : "男";
11 System.out.println("姓名:" + li.Name + "性别:" + isWoman + "年龄:" + li.Age);
12 }

 

输出结果如下:
姓名:张子同性别:男年龄:0
姓名:李子文性别:女年龄:15

 

由输出结果可以看到,在第一个实例 zhang 中由于仅设置了 Name 属性的值,所以 boolean 类型的 Sex 默认使用值 false,int 类型的 Age 默认使用值 0。第二个实例 li 同时设置了这三个属性的值。

 

面向对象的理解

1.介绍

面向过程,就是步骤。

面向对象,很符合我们现在的社会方式,你面试程序员,也是前端程序员,后端程序员的应聘,不是面向某个具体的程序说步骤。

2.案例:

  去饭店吃饭

2.1 面向过程的 

#include <iostream>
using namespace std;

void main()
{
    cout<<"引导入座"<<endl;
    cout<<"递菜单"<<endl;
    cout<<"点餐"<<endl;
    cout<<"告诉厨师菜谱"<<endl;
    cout<<"做菜"<<endl;
    cout<<"用餐"<<endl;
    cout<<"计算餐费"<<endl;
    cout<<"支付餐费"<<endl;
    cout<<"收取餐费"<<endl;
}

 

public class Hello {
    public static void main(String[] args) {
        System.out.println("引导入座");
        System.out.println("递菜单");
        System.out.println("点餐");
        System.out.println("告诉厨师菜谱");
        System.out.println("做菜");
        System.out.println("用餐");
        System.out.println("计算餐费");
        System.out.println("支付餐费");
        System.out.println("收取餐费");
    }
}

 

再引申一下,形成函数调用。但这个不是面向对象

#include <iostream>
using namespace std;
void ydrz(){
    cout<<"引导入座"<<endl;
}
void dcd(){
    cout<<"递菜单"<<endl;
}
void dc(){
    cout<<"点餐"<<endl;
}
void gscscd(){
    cout<<"告诉厨师菜谱"<<endl;
}
void zc(){
    cout<<"做菜"<<endl;
}
void yc(){
        cout<<"用餐"<<endl;
    
}
void jscf(){
    cout<<"计算餐费"<<endl;

}
void zfcf(){
    
    cout<<"支付餐费"<<endl;
    
}
void sqcf(){
    
    cout<<"收取餐费"<<endl;
}

void main()
{
    ydrz();//引导入座函数
    dcd();//递菜单函数
    dc();//点餐函数"
    gscscd();//"告诉厨师菜谱"函数
    zc();//"做菜"函数
    yc();//"用餐"函数
    jscf();//"计算餐费"函数
    zfcf();//"支付餐费"函数
    sqcf();//"收取餐费"函数

}

 

public class Hello {
    void ydrz() {
        System.out.println("引导入座");
    }

    void dcd() {
        System.out.println("递菜单");
    }

    void dc() {
        System.out.println("点餐");
    }

    void gscscd() {
        System.out.println("告诉厨师菜谱");
    }

    void zc() {
        System.out.println("做菜");
    }

    void yc() {
        System.out.println("用餐");
    }

    void jscf() {
        System.out.println("计算餐费");
    }

    void zfcf() {
        System.out.println("支付餐费");
    }

    void sqcf() {
        System.out.println("收取餐费");
    }

    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.ydrz();
        hello.dcd();
        hello.dc();
        hello.gscscd();
        hello.zc();
        hello.yc();
        hello.jscf();
        hello.zfcf();
        hello.sqcf();
    }
}

 

2.2 面向对象

#include <iostream>
using namespace std;
class Customer{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    Customer(){
    }
    ~Customer(){
    }
    void dc(){
        cout<<"点餐"<<endl;
    }
    void yc(){
        cout<<"用餐"<<endl;

    }
    void zfcf(){

        cout<<"支付餐费"<<endl;

    }
};
class Waiter
{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    void ydrz(){
        cout<<"引导入座"<<endl;
    }
    void dcd(){
        cout<<"递菜单"<<endl;
    }

    void gscscd(){
        cout<<"告诉厨师菜谱"<<endl;
    }
};
class Cook{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    void zc(){
        cout<<"做菜"<<endl;
    }

};

class Cashier
{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    void jscf(){
        cout<<"计算餐费"<<endl;
    }

    void sqcf(){
        cout<<"收取餐费"<<endl;
    }
};


void main()
{
    Customer zhangsan;
    Waiter   xiaoming;
    Cook     laowang;
    Cashier  xiaohong;
    xiaoming.ydrz();//"引导入座"函数
    xiaoming.dcd();//"递菜单"函数
    zhangsan.dc();//"点餐"函数
    xiaoming.gscscd();//"告诉厨师菜谱"函数
    laowang.zc();//"做菜"函数
    zhangsan.yc();//"用餐"函数
    xiaohong.jscf();//"计算餐费"函数
    zhangsan.zfcf();//"支付餐费"函数
    xiaohong.sqcf();//"收取餐费"函数

}

 

运行结果一致,

 

public class Hello {
    static class Customer {
        String name;
        String sex;
        String phoneNumber;

        public Customer() {
        }

        void dc() {
            System.out.println("点餐");
        }

        void yc() {
            System.out.println("用餐");
        }

        void zfcf() {
            System.out.println("支付餐费");
        }
    }

    static class Waiter {
        String name;
        String sex;
        String phoneNumber;

        void ydrz() {
            System.out.println("引导入座");
        }

        void dcd() {
            System.out.println("递菜单");
        }

        void gscscd() {
            System.out.println("告诉厨师菜谱");
        }
    }

    static class Cook {
        String name;
        String sex;
        String phoneNumber;

        void zc() {
            System.out.println("做菜");
        }
    }

    static class Cashier {
        String name;
        String sex;
        String phoneNumber;

        void jscf() {
            System.out.println("计算餐费");
        }

        void sqcf() {
            System.out.println("收取餐费");
        }
    }

    public static void main(String[] args) {
        Customer zhangsan = new Customer();
        Waiter xiaoming = new Waiter();
        Cook laowang = new Cook();
        Cashier xiaohong = new Cashier();

        xiaoming.ydrz();
        xiaoming.dcd();
        zhangsan.dc();
        xiaoming.gscscd();
        laowang.zc();
        zhangsan.yc();
        xiaohong.jscf();
        zhangsan.zfcf();
        xiaohong.sqcf();
    }
}

运行结果一致,

 进一步详细动作是谁做的

public class Hello {
    static class Customer {
        String name;
        String sex;
        String phoneNumber;

        public Customer() {
        }

        void dc(String name) {
            System.out.println(name+"点餐");
        }

        void yc(String name) {
            System.out.println(name+"用餐");
        }

        void zfcf(String name) {
            System.out.println(name+"支付餐费");
        }
    }

    static class Waiter {
        String name;
        String sex;
        String phoneNumber;

        void ydrz(String name) {
            System.out.println(name+"引导入座");
        }

        void dcd(String name) {
            System.out.println(name+"递菜单");
        }

        void gscscd(String name) {
            System.out.println(name+"告诉厨师菜谱");
        }
    }

    static class Cook {
        String name;
        String sex;
        String phoneNumber;

        void zc(String name) {
            System.out.println(name+"做菜");
        }
    }

    static class Cashier {
        String name;
        String sex;
        String phoneNumber;

        void jscf(String name) {
            System.out.println(name+"计算餐费");
        }

        void sqcf(String name) {
            System.out.println(name+"收取餐费");
        }
    }

    public static void main(String[] args) {
        Customer 张三= new Customer();
        Waiter 小明 = new Waiter();
        Cook 老王 = new Cook();
        Cashier 小红 = new Cashier();

        小明.ydrz("小明");
        小明.dcd("小明");
        张三.dc("张三");
        小明.gscscd("小明");
        老王.zc("老王");
        张三.yc("张三");
        小红.jscf("小红");
        张三.zfcf("张三");
        小红.sqcf("小红");
    }
}

 

3.继承和多态

上例:老王(laowang)厨师,有个儿子小王厨师,继承了老王厨师会的所有菜品,还有创新,小王厨师的类里能实现的方法(会做的事情)就不要写全部菜品,只写创新的菜品。、

#include <iostream>
using namespace std;
class Customer{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    Customer(){
    }
    ~Customer(){
    }
    void dc(){
        cout<<"点餐"<<endl;
    }
    void yc(){
        cout<<"用餐"<<endl;

    }
    void zfcf(){

        cout<<"支付餐费"<<endl;

    }
};
class Waiter
{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    void ydrz(){
        cout<<"引导入座"<<endl;
    }
    void dcd(){
        cout<<"递菜单"<<endl;
    }

    void gscscd(){
        cout<<"告诉厨师菜谱"<<endl;
    }
};
class Cook{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    void zc(){
        cout<<"做菜"<<endl;
    }

};

class newCook:public Cook
{
public:
    void zmb(){
        cout<<"做面包"<<endl;
    }
};


class Cashier
{
private:
    char name;
    char sex;
    char phoneNumber; 
public:
    void jscf(){
        cout<<"计算餐费"<<endl;
    }

    void sqcf(){
        cout<<"收取餐费"<<endl;
    }
};


void main()
{
    Customer zhangsan;
    Waiter   xiaoming;
    Cook     laowang;
    newCook  xiaowang;
    Cashier  xiaohong;
    xiaoming.ydrz();//"引导入座"函数
    xiaoming.dcd();//"递菜单"函数
    zhangsan.dc();//"点餐"函数
    xiaoming.gscscd();//"告诉厨师菜谱"函数
    laowang.zc();//"做菜"函数
    xiaowang.zc();//小王"做菜"函数
    xiaowang.zmb();//小王"做面包"函数
    zhangsan.yc();//"用餐"函数
    xiaohong.jscf();//"计算餐费"函数
    zhangsan.zfcf();//"支付餐费"函数
    xiaohong.sqcf();//"收取餐费"函数

}

 

 

public class Hello {
    static class Customer {
        String name;
        String sex;
        String phoneNumber;

        public Customer() {
        }

        void dc(String name) {
            System.out.println(name+"点餐");
        }

        void yc(String name) {
            System.out.println(name+"用餐");
        }

        void zfcf(String name) {
            System.out.println(name+"支付餐费");
        }
    }

    static class Waiter {
        String name;
        String sex;
        String phoneNumber;

        void ydrz(String name) {
            System.out.println(name+"引导入座");
        }

        void dcd(String name) {
            System.out.println(name+"递菜单");
        }

        void gscscd(String name) {
            System.out.println(name+"告诉厨师菜谱");
        }
    }

    static class Cook {
        String name;
        String sex;
        String phoneNumber;

        void zc(String name) {
            System.out.println(name+"做菜");
        }
    }

    static class newCook extends Cook
    {
        void zmb(String name) {
        System.out.println(name+"做面包");
        }
    };

    static class Cashier {
        String name;
        String sex;
        String phoneNumber;

        void jscf(String name) {
            System.out.println(name+"计算餐费");
        }

        void sqcf(String name) {
            System.out.println(name+"收取餐费");
        }
    }

    public static void main(String[] args) {
        Customer 张三= new Customer();
        Waiter 小明 = new Waiter();
        Cook 老王 = new Cook();
        newCook 小王 = new newCook();
        Cashier 小红 = new Cashier();

        小明.ydrz("小明");
        小明.dcd("小明");
        张三.dc("张三");
        小明.gscscd("小明");
        老王.zc("老王");
        小王.zc("小王");
        小王.zmb("小王");
        张三.yc("张三");
        小红.jscf("小红");
        张三.zfcf("张三");
        小红.sqcf("小红");
    }
}

 

 4.多态

虚函数

5.MFC

就是按钮,菜单,数据库链接,多媒体控制等都使用了类库实现。我们实例化调用实现。

posted @ 2023-09-21 09:41  szmtjs10  阅读(338)  评论(0编辑  收藏  举报