面向对象
类和对象
对象
其实每一个对象都有自己的特征,包括静态特征和动态特征
对象是用来描述客观事物的一个实体,由一组属性和方法构成
在编程中,对象的属性被存储在一些变量里,如可以将“姓名”存储在一个字符串类型的变量中,将“员工号”存储在一个整形变量中,对象的行为则通过定义方法来实现
对象都是有两种特征
静态特征
静态特征是可以用某些数据来描述的特征,如人的名字,年龄等
动态特征
动态特征是对象所表现的行为或对象所具有的功能,比如购物,收款等
表格如下:
对象 | 静态特征 | 静态特征的值 | 动态特征 |
---|---|---|---|
姓名 | 张浩 | ||
顾客对象 张浩 | 年龄 | 20 | 买东西 |
体重 | 60kg | ||
员工号 | 1000 | ||
收银员对象 李明 | 姓名 | 李明 | 收钱 |
部门 | 财务部 |
封装
封装就是把一个事物包装起来,并尽可能隐藏内部细节,对象的属性和方法是相辅相成,不可分割的,它们共同组成了实体对象,因此,对象具有封装性。
类
类定义了对象将会用有的特征(属性)和行为(方法)。
类的属性:对象所拥有的静态特征在类中表示时称为类的属性,打一个比方,购买东西的顾客都有着自己的姓名,因此姓名可以称为“顾客类”的属性,只是不同对象的这一属性值不同,如顾客的姓名不相同
类的方法:对象执行的操作称为类的方法,列如,所以顾客都有购物行为,因此这就是“顾客类”的一个方法
类与对象的关系
一个类为它的全部对象给出了一个统一的定义,而它的每个对象则是符合这种定义的一个实体,因此类和对象的关系就是抽象和具体的关系。类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例,如图
如何定义类
定义类名:通过定义类名,得到程式最外层的框架
public class A{
//定义类
}
编写类的属性:通过在类的主体中定义变量来描述类所具有的静态特征(属性),这些变量称为类成员变量
public class A{
String a;//声明了一个字符串类型的属性
int b;//声明了一个整型类型的属性
}
编写类的方法:通过在类中定义方法来描述类所具有的行为,这些方法称为成员方法
public class A{
String a;//声明了一个字符串类型的属性
int b;//声明了一个整型类型的属性
public void show(){
String aa;//在方法中声明了一个字符串类型的变量
}
}
方法调用
同一个类中的方法,直接使用方法名调用该方法
不同类的方法,首先创建对象,再使用"对象名.方法名()"来调用
public class A{
public void show(){
}
public void show1(){
show();//直接调用
A a =new A();
a.show();//创建对象点方法
}
}
变量的作用域
成员变量:AutoLion类方法可以直接使用该类定义的成员变量。如果其他类的方法要访问它,必须首先创建该类的对象,然后才能通过操作符"."来引用
局部变量:它的作用域仅仅在定义该变量的方法内,因此只有在这个方法中能够使用。
使用成员变量和局部变量需要注意以下几点内容:
作用域不同。局部变量的作用域仅限于定义它的方法,在该方法外无法访问。成员变量的作用域在整个类内部都是可见的,所以成员方法都可以使用,如果访问权限允许,还可以在类外部使用变量。
初始值不同。对于成员变量,如果在类定义中没有给他赋初始值,java会给它应该默认值,基本数据类型的值为0,引用类型的值为null。但是java不会给局部变量赋初始值,因此局部变量必须要定义赋值后在使用。
在同一方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量
局部变量可以和成员变量同名,并且在使用时,局部变量具有跟高的优先级。
返回值类型
return 表达式
例如,在A()方法中,返回值是String,因此在方法体中必须使用return返回一个字符串。
public String show(){
return "111";
}
如果方法没有返回值,则返回值类型为void。
public void show(){
}
因此,在编写程序时一定要注意方法声明中返回值的类型的方法体中真正返回值的类型是否匹配
如果不匹配,编译器就会报错
return 的作用
其实这里的return语句时跳出语句的一种,它主要做两件事。
1、跳出方法。意思是“我完成了,我要离开”
2、给出结果。如果方法产生一个值,这个值放在return后面,即<表达式>部分,意思是“离开方法
,并将<表达式>的值返回给调用他的程序。”
有参方法
带参方法
<方法名>是定义的方法方名字,它必须使用合法的标识符。
<参数列表>是传送个方法的参数列表。列表中各参数间以逗号分隔。
调用带参方法
把参数分别称为形式参数和实际参数,简称形参与实参,形参是在定义方法时对参数的称呼,目的是定义方法需要传入的参数个数和类型。实参是在调用方法时传递给方法处理实际的值。
调用方法时,注意以下两点
先实例化对象,在调用方法
实参的类型,数量,顺序都要与行参一一对应。
Package 包
为什么需要包
包有以下三个方面的作用:
(1) 包允许将类组合成较小的单元(类似文件夹)易于找到和使用相应的类文件
(2) 防止命名冲突:java中只有在不同包中的类才能重名。世界上有千千万万的程序员,命名同名的类几乎是难免的。有了包,类名就好管理多了
(3) 包允许在跟广的范围内保护类,数据和方法,可以在包内定义类。根据规则,包名的代码有可能包内访问该类。
如何声明包
要声明一个包(package),只要包含一个packag命名作为一个java源文件的第一条语句就可以。
包的声明必须是java源文件中第一条非注释语句,而一个源文件只能有一个包声明语句
命名包的规范:
java包的名字通常由小写字母组成,不能以圆点开头或结尾一个唯一包名的前通常是全部小写的ASCII,并且是一个顶级域名
包名的后续部分依不同机构各自内部的规范不同而不同。这类命名规范可能以特定目录名的组成来区分部门,项目,机器或注册名。
如何导入包
在使用impott时可以指定类的完整描述,即“包名.类名“,来导入包中的某个特定的类。
字符串
字符串的拆分
(1) separator可选项,标识拆分字符串时使用一个或多个字符。如果不选择该项,则返回包含该字符所有单个字符所有当字符的元素数组
一个字符串后面。
如何使用字符串
简单来说,使用字符串分为两步
(1) 定义并初始化字符串
(2) 使用字符串,对字符串进行一些处理
字符串的提取和查询
字符串是一个字符序列,每一个字符都有自己的位置,字符串事实上也是一个字符数组,因此他从位置0开始到(字符串长度-1)结束,一个字符串"青春无悔",其中,“青”,“青”,“草”,"原"的索引下标依次为0,1,2,3
字符串的链接
在使用"+“运算符连接字符串和int(或double)类型数据时,”+"将int(或double)类型数据自动转化成String类型
除此之外,在java中,String类也提供了另一个方法concat(),将一个字符串连接到另一个字符串后面。