4.5 Java创建一个学生类
创建一个表示学生的实体类 Student,其中有学生姓名、性别和年龄信息。要求使用属性来表示学生信息,最终编写测试代码。
首先定义一个名为 Student 的类,代码如下:
在类中通过属性定义学生、性别和年龄,代码如下:
在上述代码中将学生性别属性 Sex 设置为 private 作用域。为了对该属性进行获取和设置,还需要编写 isSex 和 setSex 方法。代码如下:
在 Student 类中添加 main() 方法,然后创建两个学生类的实例,并输出学生信息。最终代码如下:
输出结果如下:
首先定义一个名为 Student 的类,代码如下:
1 public class Student { 2 // 学生类 3 }
1 public class Student { 2 public String Name; // 学生姓名 3 public int Age; // 学生年龄 4 private boolean Sex; // 学生性别 5 }
1 public boolean isSex() { 2 return Sex; 3 } 4 public void setSex(boolean sex) { 5 this.Sex = sex; 6 }
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
就是按钮,菜单,数据库链接,多媒体控制等都使用了类库实现。我们实例化调用实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)