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编程思想》中的一个例子感觉特形象:
将这一情形想像成用遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的连接。当有人想改变频道或者减小音量时,实际操控的是遥控器(引用), 再由遥控器来调控电视机(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。
此外,即使没有电视机,遥控器亦可独立存在。也就是说, 你拥有一个引用,并不一定需要有一个对象与它关联。
音量时,实际操控的是遥控器(引用), 再由遥控器来调控电视机(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。
此外,即使没有电视机,遥控器亦可独立存在。也就是说, 你拥有一个引用,并不一定需要有一个对象与它关联。