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