Java笔记——第三章(Ⅰ)类和对象

第三章(Ⅰ)类和对象

前言:

重点掌握:
(1)如何使用类创建对象
(2)对象如何操作自己的变量和方法
理解:
对象的内存模型


一:“面向对象“的编程思想

在这个链接已介绍:
https://blog.csdn.net/weixin_45775165/article/details/104483806

面对对象实现过程:

面向对象分析 (Object-Oriented Analysis/OOA)
面向对象设计 (Object-Oriented Design/OOD)
面向对象编程 (Object-Oriented Programming/OOP)

二、类定义

类的声明
类体
成员变量
成员方法
构造方法
方法声明
方法体
局部变量
合法Java语句
1、基本结构

语法格式:

修饰符 class 类名             //类的声明
{
//属性描述 —— 使用 成员变量 描述
变量类型 变量1;
变量类型 变量2;
········
//行为描述 —— 使用 成员方法 实现
方法1定义;
方法2定义;
··········

}                                           //类体

注意:类名必须是合法的Java标识符(语法要求),同时类名要遵守以下命名规范:类名每个单词的首写字母要大写,尽量做到见名知意。

2、

属性的变量称它们为成员变量,它是出现在类体的内部,方法的外部。
(1)成员变量的定义
语法格式:

【修饰符】 数据类型 变量名【=0】; / /  方括号内的不是必须的

解释:
修饰符是表示该变量的访问权限,用来修饰类、对象和成员变量。

成员变量的数据类型可以使Java中的任何一种数据类型;成员变量的作用域在整个类体内有效,相当于我们说的全局变量。

(2)注意:成员变量的名字必须是合法的Java标识符,变量名要遵守以下命名规范:变量名首单词的首字母要小写,其余单词的首字母要大写;尽量做到见名知意。

(3)成员变量可以不显示初始化,这时系统会赋给默认值,不同数据类型,系统赋以默认值不同:

3、方法

类的行为是用方法来描述的。类体中的方法被称为成员方法
语法格式:

【修饰符】 返回类型 方法名(【参数列表】){ 
/ / 方法体,可以是任意合法的Java语句
}

解释:
(1)返回类型:方法返回类型可以是Java中任何一种数据类型,当声明方法有返回值时,必须有 return 语句,并且返回类型跟声明的类型一致。当方法不需要返回值时,返回类型必须是 void
(2)参数列表:参数列表可以是零到多个,多个参数用逗号隔开。
(3)方法体:方法体中可以包括局部变量定义和任何合法的Java语句,即在方法体内可以对成员变量和方法体中声明的局部变量进行操作。

注:方法体中声明的变量或方法的参数被称作局部变量

注意:方法名的名字必须是合法的Java标识符,方法名要遵守一下命名规范:方法名首单词首字母要小写,其他单词首字母大写;尽量见名知意。

成员方法可以区分为两种 1、有返回值的 2、void 即无返回值

量使用时可以不显式赋值,系统会赋给默认值,而局部变量试用前必须初始化
(2)成员变量的作用域在类体内,而局部变量的作用域只限在方法体内

5、方法重载

在Java中一个类里面允许有多个同名的方法,为了区分同名方法,定义了方法重载,即要求方法的参数列表中参数的个数或者是参数的类型不同,方法的返回类型和参数名不参与比较。

方法重载是多态性的一种体现。可以通过传递不同的参数,使同名的方法产生不同的行为,即表现出多态性

6、构造方法

其特殊性在于构造方法的名字必须与类名相同,而且没有返回类型(既没有返回值,也没用void)。
语法格式:

 类名(参数列表){   
 / / 方法体
 }

对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

(1)当一个类中没有编写构造方法时,系统默认提供一个无参构造方法,且方法体中没有语句。如果在类体中定义了参数非空的构造方法,那么Java就不再提供默认的无参构造方法,这时要想使用默认的无参构造方法,必须显式的写出来。

(2)构造方法也可以重载,注意要符合方法重载的要求。

7、提示!

在编程中经常犯的两个错误:
(1)在类体中定义完了变量又单独给变量赋值
(2)直接在类体中写输出语句、if语句、循环语句等

三、对象

这里再重申一下类和对象的关系:
类和对象就像是模具和产品的关系,模具的作用就是用来生产产品的,定义类的目的是用来创建具有相应属性和行为的对象。
由类生成对象的过程,也称为类的实例化过程

1、对象的创建与使用

1)类其实是引用数据类型的一种。就跟一种数据类型可以定义多个变量一样,一个类可以生成多个对象。所以使用类创建对象的过程等价于变量定义过程

2)使用类创建对象分三步:
(1)声明对象(等价于声明变量)
语法格式:

类名 对象名;   等价于     数据类型 变量名;

(2)创建对象(等价于变量赋值)

    语法格式:对象名 = new 构造方法;(等价于 变量名 = 值;)

为对象赋值需要使用new运算符,同时要调用构造方法。
构造方法专门用于构造对象,只有创建对象的时候才会被调用。

eg:Student stuOne;stuOne = new Student(); //调用无参构造法方法

stuOne = new Student("小明”,18,“数学系”);//调用三个参数构造方法

对象的声明与创建:语法格式:类名 对象名 = new 构造方法;
(3)对象的使用:(等价于变量的使用)

对象一旦创建,对象就具有了该类描述的属性和行为,所以,

  • 对象可以操作自己的成员变量改变状态,
  • 对象能调用类中的方法产生一定的行为。

1、对象操作自己的成员变量(体现对象的属性)
对象创建之后,对象通过点运算符 “ . ” 访问操作自己的成员变量。

访问格式为:对象名.成员变量;

所以,为对象的属性赋值可以这样完成:

对象名.成员变量 = 值; 

为对象的属性赋值

关于为对象的属性赋值,我总结了两大类,五小类。

一、声明与创建对象时直接调用有参的构造方法
为参数赋值即为对象的属性赋值
二、声明与创建对象时调用无参的构造方法
(1)定义成员变量的同时显式赋值
(2)定义成员变量时不赋值,其后也不赋任何值,那么这时系统会赋给默认值,不同数据类型,系统赋以默认值不同:

在这里插入图片描述
(3)在方法体内为属性(即成员变量)赋值
(4)在测试类里通过点运算符赋值。


2、对象调用类中的成员方法(体现对象的行为)
对象创建之后,对象可以通过点运算符 “ . ” 调用类中的方法,从而产生一定的行为(功能),

调用格式为:对象名.成员方法;

成员方法只有被调用的时候才会被执行。


成员方法可以分为两类1、有返回值的 2、void即无返回值的

举例说明成员方法的三种使用方式:

public class MethodOverloading {     
   public void print() {


 System.out.println("无参数方法");     
    }



 public void print(String s) {     
       System.out.println(s);      
         }


 public int print(int num1,int num2) {    
        return num1+num2;     
           }


  public static void main(String[] args) {      
       MethodOverloading m= new MethodOverloading();     
        m.print();      
      m.print("含有一个String参数方法");         
    System.out.println("两个整型参数方法:"+m.print(23,34));   
            }

       }


2、对象内存模型

对象的内存分配过程,即对象初始化的过程

(1)声明对象时的内存模型
当完成对象的声明时,系统会为对象开辟两部分内存:栈内存和堆内存。

堆内存用来存放具有的属性的变量,我们把它称作实体
栈内存用来存放对象实体的地址信息,我们把它称为对象的引用

栈内存和堆内存都为空,所以是没办法用的。
(2)对象使用new运算符创建对象后的内存模型
对象的成员变量会被分配内存,同时把占用的内存地址赋给对象的引用,只不过此时对应的变量值都是系统给的默认值。为对象的成员变量赋值后,内存模型中实体对应的两个属性值被修改

(3)创建多个不同的对象时内存模型
因为多个对象对应的实体不同,所以为属性赋值时并不会混淆,这也是为什么使用对象属性是必须用对象名做前缀的原因。

(4)小结
一个完整的对象包括引用和实体,实体中存放对象对应属性的值,引用中存放的是实体的地址,每个对象可以通过引用找到属于自己的实体,这也是为什么类被称作引用数据类型的原因。


后记:
害,到此本文算是完结了,而我的Java之路才刚刚开始。其中关于对象的使用,我可谓煞费苦心,但到此我只能算是对此有一个小小的认识。这篇文章我非常的不满意,知识的完整性、系统性,结构的逻辑性都非常差,相信经过一段时间的学习,对于本文我会有一个非常大的改动的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值