天学会java_九天学会Java,第八天,面向对象

本文介绍了面向对象编程的基本概念,包括类与实例的区别、构造函数的使用、成员变量及成员函数的作用,并通过创建猫类的实例进行详细讲解。

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

变量和数据类型,赋值和输出

算术运算

选择结构

循环结构

函数定义,函数调用

变量作用域

栈,程序运行的基石

面向对象

异常处理

语言提供的公用包

为什么要有面向对象编程,因为万物皆是对象。

对象是我们描述/建模现实世界的最佳工具。

面向对象是一种思想,将功能封装进对象,强调具备了功能的对象。

举个例子:小汽车是一个对象没问题吧,这个对象有底盘,轮胎,车身,中控等属性。

除此之外,这个对象还具备一些动作,如前进,后退,转弯。

你看,用面向对象来描述世间万物是不是特别地流畅易懂。

说到面向对象,要澄清两个概念,一个是“类”,一个是“实例”。

类是具有相同特性和行为的对象集合,是一个抽象定义。

比如人类就是一个类,而实例是以类为模板,生成有意义的实体。

比如你,我,他都是人类的一个实例,这么类比应该好理解了吧。

先记住类的定义怎么写,参考下面伪代码:

class 类名{

数据类型 属性 ;

….

public 返回值的数据类型 方法名称(参数1,参数2…){

程序语句 ;

[return 表达式;]

}

}

类名

类名告诉计算机,我们对某一类事物进行了抽象,把共同的属性和行为提取出来,请看图:

oo_cat_fig_1.jpg

oo_cat_fig_2.jpg

第一只小黄猫,第二只小奶猫没问题吧。现在我们把它们都抽象成猫类,都有四肢,尾巴,能跑能吃。

此后,我们就有了猫类这个概念。如果还不能理解,请给我留言。

在src目录右键,New -> Java Class

输入Cat作为类名

/** Cat.java 文件

* 类名,Cat

* 这个类里什么都没定义

*/

public class Cat {

}

以上代码即定义了一个类,类名叫Cat

实例

前面提到的黄猫,奶猫都是猫类的实例。实例不是一个抽象概念,而是一个具体的物体。

在src目录右键,New -> Java Class

输入SeventhLessonOO

public class SeventhLessonOO {

public static void main(String[] args) {

/**

* 新建一个实例,该变量的名字叫milkCat

*/

Cat milkCat = new Cat();

}

}

Cat.java 和 SeventhLessonOO.java 都在src目录下

以上代码即实例化了一只奶猫。

构造函数

Java根据构造函数来生成实例。

为了举例说明构造函数怎么使用,修改Cat.java如下

public class Cat {

private String name; /* (1) 为了说明构造函数,我们修改Cat的定义,加入name成员变量 */

/**

* 这就是构造函数,这个函数没有返回值,也不需要在public后面写void

* 记住这个语法规则

*/

public Cat(String name) {

this.name = name; /* this关键字表示当前实例本身 */

/*

* 上面这句话的意思时,函数参数name的值,赋值给实例本身的name,即(1)处定义的private String name;

*/

}

}

如何调用构造函数

public class SeventhLessonOO {

public static void main(String[] args) {

/**

* 新建一个实例,该变量的名字叫milkCat

* 由于我们声明了构造函数,则必须使用构造函数

* 传入一个字符串参数

* "I m milkCat 会传递给参数name

*/

Cat milkCat = new Cat("I m milkCat");

}

}

以上就是调用构造函数的过程,如果还写new Cat();会报错。

因为我们已经声明了构造函数,那么就要按构造函数的定义来生成实例。

成员变量

我们说过,猫这个类,有四肢,有尾巴。现在我们再次修改类的定义

加入body成员变量

public class Cat {

private String name; /* (1) 为了说明构造函数,我们修改Cat的定义,加入name成员变量 */

private String body; /* 新加了body成员变量 */

/**

* 这就是构造函数,这个函数没有返回值,也不需要在public后面写void

* 记住这个语法规则

*

* 新加了body参数

*/

public Cat(String name, String body) {

this.name = name; /* this关键字表示当前实例本身 */

/*

* 上面这句话的意思时,函数参数name的值,赋值给实例本身的name,即(1)处定义的private String name;

*/

this.body = body;

}

}

成员函数

成员函数可以类比成这个类可以有什么动作。猫可以叫,可以跑

为了更好地直观感受成员函数,我们修改Cat这个类,让Cat这个类可以画一只猫

修改Cat.java

public class Cat {

private String name; /* (1) 为了说明构造函数,我们修改Cat的定义,加入name成员变量 */

private String body; /* 新加了body成员变量 */

/**

* 这就是构造函数,这个函数没有返回值,也不需要在public后面写void

* 记住这个语法规则

*

* 新加了body参数

*/

public Cat(String name, String body) {

this.name = name; /* this关键字表示当前实例本身 */

/*

* 上面这句话的意思时,函数参数name的值,赋值给实例本身的name,即(1)处定义的private String name;

*/

this.body = body;

}

/**

* 定义一个成员函数

* 通过System打印地方式输出猫的字符样子

*/

public void drawMyself() {

System.out.println("Ooooo I am " + this.name);

System.out.println(body);

}

}

修改main函数

public class SeventhLessonOO {

public static void main(String[] args) {

/**

* 新建一个实例,该变量的名字叫milkCat

* 由于我们声明了构造函数,则必须使用构造函数

* 传入一个字符串参数

* "I m milkCat 会传递给参数name

*/

String body =

" A_A" + "\n"

+ " (-.-)" + "\n"

+ " |-|" + "\n"

+ " / \\" + "\n"

+ "| | __" + "\n"

+ "| || | | \\___" + "\n"

+ "\\_||_/_/\n";

Cat milkCat = new Cat("I m milkCat", body);

/**

* 这句话让实例本身,调用成员函数,即

* 小奶猫把自己"画"出来

*/

milkCat.drawMyself();

}

}

程序输出:

Ooooo I am I m milkCat

A_A

(-.-)

|-|

/ \

| | __

| || | | \___

\_||_/_/

是不是有点意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值