Java之面向对象编程思想

本文通过敬老院奶奶的范例,讲解Java面向对象编程。先介绍应用程序模拟现实世界及问题领域,接着定义Grandma类,包括属性、构造方法和方法,然后说明如何用new语句创建对象、new语句作用、构造方法语法,还介绍了调用对象方法、定义和运行测试类,最后给出思考题巩固知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

write:2022-4-26
前面我们学习了Java语言的基础语法:Java语言的基本语法和规范,但是你一定听说过java是一门面向对象的开发语言,什么是面向对象呢,本文通过范例讲解。

1.应该程序模拟现实世界

应用程序是对现实世界的模拟,而现实世界包罗万象,非常复杂,因此,实际的程序往往只针对一个特定的领域来模拟,这个特定的领域我们成为问题领域。
在这里插入图片描述

2.范例

2.1 问题领域

问题领域:敬老院的奶奶们
敬老院的奶奶们不仅有名字,年龄,每天还要吃饭,还会做算术:
在这里插入图片描述
怎么用java程序来模拟问题领域呢,就是对问题领域建立对象模型:
在这里插入图片描述
当我们定义一个类后,就可以创建具体的对象,这个过程叫做实例化,把对象叫做类的实例,例如根据奶奶类创造王奶奶这个对象就叫做实例化,王奶奶就是奶奶类的实例。

接下来我们就先定义类:

2.2 定义Grandma类

在这里插入图片描述
上面的代码看了或许存在许多疑惑,没关系,学习java,最重要的就是分析代码,我们慢慢分析:
1)属性:奶奶们的名字和年龄本身就有的,是属性;
2)构造方法:构造方法有两种
不带参数的构造方法:每个类都有它的不带参数的构造方法
带参数的构造方法:由程序员来写的,里面的参数来源于定义的属性,当程序员写了带参数的构造方法后,前面的那个不带参数的构造方法就没啥作用了
3)方法:吃东西和做算术是动作也是行为,属于方法;如果还是不能区别可看看这里:Java中的类、对象、属性和方法
怎么写方法呢:
方法的语法:方法包括修饰符、方法名、参数、返回类型和方法主体。
eg:
在这里插入图片描述
试着找一找下面方法中的修饰符、方法名、参数、返回类型和方法主体吧:

public int sum(int a,int b){
int sum=a+b;
return sum;
}

此时还不懂没关系,后面还会详细介绍。

2.3 创建实例

2.3.1 用new语句创建Grandma对象

Grandma wang=new Grandma(“王奶奶”,101);
Grandma zhang=new Grandma(“张奶奶",88);
Grandma sun=new Grandma(“孙奶奶",92);

1.创建对象:new+构造方法
2. 为什么是Grandma(“王奶奶”,101),因为前面定义的类中的构造方法有两个,而只要有程序员写的带参数的构造方法,就是用带参数的那个构造方法,而带参数的构造方法带了String name,int age这两个属性
3. 对象被创建后都存放在内存中,当我们想要使用这些对象,总不能每一个都是Grandma对象,wang zhang sun可以理解为是我们分为给三个创建的对象取得名字,这在java中称为变量。
在这里插入图片描述

2.3.2 new语句的作用

1)为Grandma对象分配内存空间
2)把Grandma对象的属性初始化为数据类型的默认值:name=null;age=0;
在Grandma类中定义了两个属性,当使用new创建对象时,就会为对象的使用初始化,例如name是String类型的,初始化就是null,age是int类型的,初始化就是0,数据类型后面还会详细讲解
在这里插入图片描述
3)如果声明时对属性显式初始化,那么把初始化值赋给属性:age=-1
我们发现上面写了age=-1,但我们又说了初始化age=0,矛盾了吗,其实并没有,这是因为当写程序时就已经给出了属性的值(这就叫对属性显式初始化),就采用给定的值age=-1
4)调用构造方法
5)返回对象的引用

2.3.3 构造方法的基本语法

1)构造方法的方法名和类名相同(必须相同)
2)没有返回值(返回类型+方法名)
3)允许有多个重载的构造方法(重载后面讲解)
在这里插入图片描述

2.3.4 调用Grandma对象的方法

前面Grandma类定义了三个方法:
在这里插入图片描述
当我们创建了一个对象就可以调用方法: 变量.方法名(参数)
Grandma wang=new Grandma(“王奶奶”,101);
wang.printInfo();
wang.eat(“豆浆”);
wang.add(7,8);

2.3.5 定义GrandmaTester类

前面我们讲过程序的运行入口是main方法,因此我们将创建的对象写入main()方法:
/** GrandmaTester.java */
public class GrandmaTester{
public static void main(String args[]){
Grandma wang=new Grandma(“王奶奶”,101);
wang.printInfo();
wang.eat(“豆浆”);
wang.add(7,8);
}
}

2.3.6 运行GrandmaTester类

在这里插入图片描述

3. 课堂小结

在这里插入图片描述

4. 思考题

1.运行以下Sample类,会打印什么结果?
public class Sample{
int a,b;
int c=-1;

public Sample(){a=-2;}
public Sample(int p1,int p2){a=p1; b=p2;}
public Sample(int p1,int p2,int p3){
this(p1,p2);
c=p3;
}
public static void main(String args[]){
Sample s=new Sample();
System.out.println(“a=”+s.a);
System.out.println(“b=”+s.b);
System.out.println(“c=”+s.c);
}
}
答案:
在这里插入图片描述
2.运行以下Sample类,会打印什么结果?
public class Sample{
int a,b;
int c=-1;

public Sample(){a=-2;}
public Sample(int p1,int p2){a=p1; b=p2;}
public Sample(int p1,int p2,int p3){
this(p1,p2);
c=p3;
}
public static void main(String args[]){
Sample s=new Sample(5,6);
System.out.println(“a=”+s.a);
System.out.println(“b=”+s.b);
System.out.println(“c=”+s.c);
}
}

答案:
在这里插入图片描述
3.运行以下Sample类,会打印什么结果?
public class Sample{
int a,b;
int c=-1;

public Sample(){a=-2;}
public Sample(int p1,int p2){a=p1; b=p2;}
public Sample(int p1,int p2,int p3){
this(p1,p2);
c=p3;
}
public static void main(String args[]){
Sample s=new Sample(2,3,4);
System.out.println(“a=”+s.a);
System.out.println(“b=”+s.b);
System.out.println(“c=”+s.c);
}
}
答案:
在这里插入图片描述
4.以下哪些可作为Grandma类的构造方法?
a) public void Grandma(){…}
b) public Grandma(int age){…}
c) grandma(){…}
d) Grandma(String s){…}

答案:b,d

5.编程题
请参照Grandma类和GrandmaTester类编写Grandpa类和GrandpaTester类。
Grandpa类表示敬老院的爷爷,他们能够做减法运算。他们也有名字和年龄属性。
在GrandpaTester类的main()方法中创建一个名叫“王爷爷”的Grandpa对象,他今年85岁,请他计算“8-5”。

现在你对面向对象开发思想有一定的认识了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值