面向对象思想,类和对象

本贴最后更新于 1705 天前,其中的信息可能已经斗转星移

面向对象思想

举例:

  • 洗衣服:
  • 面向过程:把衣服脱下来--> 找一个盆--> 放点洗衣粉--> 加点水--> 浸泡 10 分钟--> 揉一揉--> 清洗衣服--> 拧干--> 晾 起来
  • 面向对象:把衣服脱下来--> 打开全自动洗衣机--> 扔衣服--> 按钮--> 晾起来
  • 区别:
  • 面向过程:强调步骤。
  • 面向对象:强调对象,这里的对象就是洗衣机。

特点

面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。 面向对象的语言中,包含了三大基本特征,即封装、继承和多态。

类和对象

什么是类

  • 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物。

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

举例:小猫。

  • 属性:名字、体重、年龄、颜色。
  • 行为:走、跑、叫。

什么是对象

-对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。

现实中,一类事物的一个实例:

  • 举例:一只小猫。
  • 属性:tom、5kg、2 years、yellow。
  • 行为:溜墙根走、蹦跶的跑、喵喵叫。

类与对象的关系

  • 类是对一类事物的描述,是抽象的。
  • 对象是一类事物的实例,是具体的。
  • 类是对象的模板,对象是类的实体。

类的定义

  • 类的定义格式
public class ClassName {   
 //成员变量   
 //成员方法   
}   
  • 定义类:就是定义类的成员,包括成员变量和成员方法。
  • 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
  • 成员方法:和以前定义方法几乎是一样的。只不过把 static 去掉,static 的作用在面向对象后面课程中再详细 讲解。

类的定义格式举例:

public class Student {   
 //成员变量   
 String name;//姓名   
 int age;//年龄   
 //成员方法   
 //学习的方法   
 publicvoid study() {   
 System.out.println("好好学习,天天向上");   
 }   
 //吃饭的方法   
 publicvoid eat() {   
 System.out.println("学习饿了要吃饭");   
 }   
}   

对象的使用

  • 创建对象格式:
类名 对象名 = new 类名();   
  • 使用对象访问类中的成员:
对象名.成员变量; 对象名.成员方法();   
  • 对象的使用格式举例:
public class Test01_Student {   
 public static void main(String[] args) {   
 //创建对象格式:类名 对象名 = new 类名();   
 Student s = new Student();   
 System.out.println("s:"+s);   
 //demo.Student@100363   
 //直接输出成员变量值   
 System.out.println("姓名:"+s.name);//null   
 System.out.println("年龄:"+s.age);//0   
 System.out.println("‐‐‐‐‐‐‐‐‐‐");   
 //给成员变量赋值   
 s.name = "赵丽颖";   
 s.age = 18;   
 //再次输出成员变量的值   
 System.out.println("姓名:"+s.name);//赵丽颖   
 System.out.println("年龄:"+s.age);//18   
 System.out.println("‐‐‐‐‐‐‐‐‐‐");   
 //调用成员方法   
 s.study(); // "好好学习,天天向上"   
 s.eat(); // "学习饿了要吃饭"   
 }   
}   

成员变量的默认值

数据类型 默认值
基本类型 \
整数(byte,short,int,long) 0
浮点数(float,double) 0.0
字符(char) '\u0000'
布尔(boolean) false
引用类型 \
数组,类,接口 null

对象内存图

一个对象内存图

20200314123835341.png

两个对象使用同一个方法的内存图

20200314123924520.png

两个引用指向同一个对象的内存图

20200314123959236.png

使用对象类型作为方法的参数

20200314124222730.png

使用对象类型作为方法的返回值

20200314124253270.png

成员变量和局部变量区别

20200314124345412.png

  • 在类中的位置不同 重点
  • 成员变量:类中,方法外
  • 局部变量:方法中或者方法声明上(形式参数)
  • 作用范围不一样 重点
  • 成员变量:类中
  • 局部变量:方法中
  • 初始化值的不同 重点
  • 成员变量:有默认值
  • 局部变量:没有默认值。必须先定义,赋值,最后使用
  • 在内存中的位置不同 了解
  • 成员变量:堆内存
  • 局部变量:栈内存
  • 生命周期不同 了解
  • 成员变量:随着对象的创建而存在,随着对象的消失而消失
  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...