面向对象 (创建,构造方法,this的应用)

一、对象

1.组成部分:

(1) 对象的属性:代表对象有什么外在特点,体现对象的静态部分,使用变量进行表示
(2) 对象的方法:代表对象有什么功能,能干什么;体现对象的动态部分,使用函数/方法进行表示

2.类和对象的关系

(1) 类是对象的模板
(2) 对象是类的实例

注意:一个类可以创建出多个对象

二、类的定义

1.类用于描述该类对象有哪些属性和方法,类有两部分组成

(1)属性

(2)方法

2.类的定义
class 类名{
	// 1. 属性
	
	// 2. 方法
}
3.属性:又称成员变量

(1) 属性:成员变量
(2) 位置:定义在类以内,方法以外
(3) 语法:数据类型 变量名;   // 只声明
         数据类型 变量名 = 值;  // 声明的同时并 初始化
(4) 成员变量具有默认值:同数组
       整数类型:0
       小数类型:0.0
       字符类型:空字符(\u0000)
       布尔类型:false
       对象类型:null
(5) 成员变量的作用范围:至少在本类中有效
(6) 成员变量可以和局部变量命名冲突,当命名冲突时,优先使用局部变量


4.方法

(1) 位置:定义类以内,其他方法以外
(2) 语法:
    函数:public static 返回值类型 函数名(形参){
               // 函数的实现
         }
    
    方法:public 返回值类型 方法名(形参){
              // 方法的实现
         }
         
         注意:方法不在加 static
(3) 方法的定义:
    修饰符  返回值类型 方法名(形参){
        // 方法的实现部分
    }
    
(4) 方法的定义分为:方法的声明和方法的实现
    a. 方法的声明: 修饰符 返回值类型 方法名(形参)异常
       -> 修饰符:一个方法可以定义多个修饰符,0~n个,没有位置先后要求
       -> 返回类型:void/8种基本数据类型+对象类型
       -> 方法名:望文生义、第一个单词首字母小写,其余单词首字母大写
       -> 异常:后续讲解
    b. 方法的实现:{}
    
(5) 方法的重载(overload):(方法名相同,参数列表不同)
    a. 理解:在一个类中可以多个名字相同,但是参数不同的方法
    b. 要求:
       i. 方法名相同
       ii. 参数列表不同:数据类型、个数、顺序
       iii. 对 修饰符、返回值类型、异常没有要求
    c. 注意:如果仅仅方法的参数名不同,不能构成方法的重载
    d. 使用:根据调用时,实际给的参数决定使用哪一个重载方法
            对象名.方法名(实参);

三、对象的创建

1.语法:类名 对象名 = new 类名();

2.操作对象的属性和方法:

(1)操作对象的属性:

         对象名.属性 = 值;

         对象名.属性名

(2)调用对象的方法:

          对象名.方法名(实参);

四、构造方法(Construtor)

1.构造方法:是一种特殊的方法,定义类以内,其他方法以外

2.特点:

(1)方法名必须和类名相同

(2)没有返回值类型(连void都没有)

       语法:修饰符  类名(形参){}

(3)允许重载,一个类中可定义多个构造方法,但无参构造只能定义一个

(4)构造方法不允许手动调用,在创建对象时被调用

3.注意事项:

(1) 对象在创建时,使用一次构造方法;一个构造方法可以创建多个对象
(2) 如果在一个类中没有定义任何的构造方法,则jvm默认提供一个 公开的、无参数的构造方法;
    如果在类中定义任何有参数的构造方法,则jvm就不再提供默认的构造方法;-》可以手动提供

4.作用

(1) 用于创建对象
(2) 用于给属性赋值

总结:开发时,一个类通常定义2个构造方法,一个无参,一个有参构造

五、this的应用

1.第一种应用:this.

(1) this代表当前对象,用于访问当前对象的属性 和 成员方法
(2) this.属性 / this.方法名(实际参数);
(3) this.在访问属性(成员变量)/this.方法名(实参)时,通常可以省略,但是 当成员变量 和 局部变量命名冲突时,可以利用 this.区分出 成员变量
    (注意:加了 this. 访问的变量,一定成员变量)
(4) 注意:this. 可以应用在构造方法也可以应用普通成员方法中

2.第二种应用:this()

(1) this()只能应用在构造方法中的第一行有效语句
(2) this()/this(实参):代表调用本类的其他构造方法

六、对象创建的过程

1.分配空间:为属性赋默认值

2.初始化:为属性第二次赋值的机会

3.执行构造方法:为属性第三次赋值

七、引用

1.引用:对象类型的变量称为引用

类名 引用名 = new  类名();
 引用类型      对象类型
注意:java是一种强类型的语言,引用的类型必须 和 对象类型一致
 Techer t = new Teacher();
 Student s = new Student();

2.引用存储对象 在 堆空间中的首地址

引用根据存储的地址到堆空间中找对地址对应的对象,称为指向
3.每个对象在堆空间相互独立,操作一个对象,不会影响其他对象内容

 4.可以单独声明 引用

类名  引用名;
Student s;

5.同类型的引用之间可以相互赋值,传递的是对象在堆空间中首地址

6.可以利用null为引用作为初始化的数据,null代表空地址

Student s = null;
注意:如果以 存储 null的引用操作对象,则编译通过,运行报错,错误信息为:java.lang.NullPointerException(空指针异常)

7.对象的应用场景:

(1) 引用应用在形式参数上:对应的对象和引用都可以作为实际参数进行传递
(2) 引用应用在返回值上:对应的对象 和 引用都可以作为返回值进行 返回

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值