第7章 类与对象

Java类与对象

“万事万物,一切皆为对象!”

1.面向对象程序设计

  • 同时将具有相同特征的事物抽象成一种新的数据类型—类
  • 在类的基础上创建对象
  • 面向对象定义之中,也规定了一些基本的特征:
    (1)封装:保护内部的操作不被破坏;
    (2)继承:在原本的基础之上继续进行扩充;
    (3)多态:在一个指定的范围之内进行概念的转换。

2.类的定义

类是一个模板,它描述一类对象的属性和行为(方法)。

定义类的步骤

  • 定义类名
  • 编写类的属性
  • 编写类的方法
语法:
  [访问权限修饰符] class 类名{
      //属性(特征)---> 抽 像
      [访问权限修饰符] [普通修饰符] 数据类型 变量名称 = [初始值];
      //方法(功能)
      //其它[静态代码块,构造方法]
  }

注意:

类名一般采用大驼峰方式书写

3.对象的创建和使用

对象是通过类创建出来的一个实例

对象的使用:通过引用来操作对象。 //例如a

创建:使用new关键字创建对象。

语法:
    //格式一:声明并实例化对象
    类名称 对象名称 = new 类名称();
	//格式二:先声明对象,然后实例化对象
	类名称 对象名称;
	对象名称 = new 类名称();
	//注:上面的为无参构造方法,其实也可以理解为使用new+构造方法创建-个新的对象
	类名称 对象名称=new 类的构造方法;
//注:new是“为新建对象开辟内存空间”的运算符;它以类为模板,开辟空间并实例化一个对象,返回对该对象的一个引用(即该对象所在的内存地址)

调用对象的方法和属性

使用“.”进行以下操作
访问类的属性:对象名.属性
调用类的方法:对象名.方法名()

4.全局变量和局部变量

定义位置作用域默认值内存
成员变量类里面,方法外面成员变量的作用域在整个类内部都是可见的null堆内存
局部变量方法体里面局部变量的作用域仅限于定义它的方法必须先初始化基本: 栈 引用:

注意

  • 在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量。
  • 两类变量同名时,局部变量具有更高的优先级。

5.构造方法

构造方法:对象被创建的时候会调用的方法

对象在被创建的时候,也就是被new的时候,会自动调用构造方法。如:类名 对象名 = new 构造方法;

构造方法和普通方法类似但有以下不同

在这里插入图片描述

注意

(1)当没有指定构造方法时,系统会自动添加无参的构造方法。
(2)当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。
(3)构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。

例题

/**
 * @标题: 第7章
 * @项目名 例题1.1
 * @项目描述: 创建一个人的类Ren,类中有名字name,性别sex,name和sex初始化为name="大帅哥",sex='男'
             和两个有参构造方法,分别对应输入nameSR,sexSR和nameSR的两种情况
             一个无参构造方法对name,sex进行赋值name=""yaojiawen".sex='男'。
             一个shuCu()方法输出“个人信息:”这一行字.
             在此类下创建主方法,并测试以上功能
 * @创建人 姚嘉文
 * @创建时间 2021/5/1615:29
 * @JDK版本 1.8
 */

 class Ren {
    String name="大帅哥";      //属性name
    char sex='男';              //属性name
    Ren(){      //无参构造方法
        name="yaojiawen";
        sex='男';
    }
    Ren(String nameSR){     //有参构造方法 参数为String nameSR
        name=nameSR;
    }
    Ren(String nameSR,char sexSR){  //有参构造方法 String nameSR,char sexSR
        name=nameSR;
        sex=sexSR;
    }
     void shiCu(){          //普通方法
         System.out.println("个人信息:");
     }

    public static void main(String[] args) {
        Ren a=new Ren("汉子");
        a.shiCu();
        System.out.println("姓名:"+a.name+"\n性别:"+a.sex);
    }
}

关于用引用来操作对象

关于用引用来操作对象我印象最为深刻的是《Java编程思想》中的一个例子感觉特形象:

将这一情形想像成用遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的连接。当有人想改变频道或者减小音量时,实际操控的是遥控器(引用), 再由遥控器来调控电视机(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。

此外,即使没有电视机,遥控器亦可独立存在。也就是说, 你拥有一个引用,并不一定需要有一个对象与它关联。

音量时,实际操控的是遥控器(引用), 再由遥控器来调控电视机(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。

此外,即使没有电视机,遥控器亦可独立存在。也就是说, 你拥有一个引用,并不一定需要有一个对象与它关联。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风萧寒水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值