第四章类与对象

类:用于描述多个对象的共同特征,是对象的模板
对象:用于描述现实中的个体是类的实例
面向对象
面向过程:“我该怎么做”
面向对象:“我该让谁来做”
创建对象格式:类名 对象名 = new 类名();
类:是对某一类事物的抽象描述;
对象:用于表示现实中该类事物的个体;
类的定义:使用关键字class来定义java中的类
定义类的格式:public class 类名{
数据类型 变量名1;
数据类型 变量名2;
修饰符 返回值类型 方法名(参数){
执行语句;
}
}
局部变量与成员变量的只要区别:
1.定义位置上的区别:成员变量定义在类中方法外;局部变量在方法内语句内;
2.作用域不同:成员变量作用范围是整个类;局部变量作用在方法内语句内;
构造方法与对象的创建
构造方法:创建对象时用,构造方法的名字和类名一样,没有类型,如:
class Point {
Point ( ) { }
}
1.默认的构造方法:如果不定义构造方法,系统提供默认的构造方法
2.自定义构造方法:如果自定义构造方法,系统不提供默认构造方法
创建对象:类是一种数据类型,类声明的变量叫对象变量,简称对象
1.声明对象:
2.为对象分配变量(创建对象):用new运算符号和构造方法(new X();)
使用对象:对象.变量
对象.方法
避免使用空对象,不要让空对象去访问变量或方法否则编译通过,运行出现异常(命令行里操作)
对象的引用和实体:对象本身中存放着引用,表示自己可以操作分配给自己的变量,调用类提供的方法;
分配给对象的变量称作对象的“实体”;
两个类型相同的对象,如果二者的引用相同,那么二者就具有完全相同的“实体”
参数传值
1.传值机制:方法中参数变量的值是调用者指定的值的拷贝
2.基本数据类型参数的传值:byte short char int long float double
3.引用类型参数传值:(如下图所示)
在这里插入图片描述
对象的组合
组合与复用:如果一个对象a组合了对象b ,那么对象a就可以委托对象b调用其方法,即对象a以组合的方式复用对象b的方法;
通过组合对象来复用方法有以下特点:1.通过组合对象来复用方法也称“黑盒”复用,因为当前对象只能委托所包含的对象调用其方法,当前对象所包含的对象方法的细节(算法细节)是一无所知的;2.当前对象随时可以更换所包含的对象,即对象与所包含对象属于弱耦合关系
实例成员与类成员
实例变量和类变量的声明:class A {
int x ; // 实例变量
static int y ; //类变量
static void f ( ) { //类方法
}
int g ( ) { //实例方法
return 100;
}
}
实例变量和类变量的区别:
1.不同对象的实例变量互不相同;
2.所有对象共享类变量
3.通过类名直接访问类变量 //实例 变量不能用类名访问,只能用对象访问
实例方法和类方法的定义:
1.对象调用实例方法 ,只能对象来调用,实例方法可以操作实例或类变量
2.类名调用类方法 ,对象也能调用,类方法只能操作类变量
3.设计类方法的原则:算法不需要操作成员变量,就可以考虑将这样的算法写成类方法
Arrays类:
public static void sort(double a [ ])方法可以把参数a指定的double类型数组按升序排序
public static int binarySearch(double [ ] a,double number )
方法的重载
方法重载:在同一个类中,允许出现同名的方法,只有方法的参数列表不同即可
参数列表不同:参数个数,数据类型,
顺序
方法重载的注意事项:
1.参数列表必须不同
2.重载和参数变量名无关
3.重载和返回值类型无关
4.重载和修饰符无关
技巧:重载看方法名和参数列表
this关键字
作用:区分成员变量与局部变量同名的情况
在方法中访问成员变量写this.
定义方法:比较是否符合,是就返回true,不是就返回false
this 关键字:本类的对象引用
哪个对象调用的,this就表示哪一个对象
this关键字:1.可以出现在实例方法和构造方法中;(实例方法一定是对象来调用,当一个对象调用实例方法时,那么该实例方法中出现的this就代表当前正在调用该对象)
2.this不可以出现在类方法中

包是java语言有效地管理类的一个机制
不同java源文件中的两个类名字相同时,它们可以通过隶属于不同的包来相互区分
1.包语句:package tom.jiafei.deng;作为源文件的首语句(至多一个包语句)
2.有包名的类的存储目录:按着包名形成的目录存放字节码文件
3.运行有包名的主类
Import语句
引入包中的类
源文件的包语句之后
Import 包名.类名;
Import 包名.*;
1.引入类库中的类
2.引入自定义包中的类:把程序使用的自定义的包名所形成的目录都放在同一文件夹中
都是无名包而且在同一个文件夹下的类就可以互相使用,无包名类也可以使用import语句来使用有包名的类,但是有包名的类无论如何也无法使用无包名的类
访问权限
访问权限:指对象是否可以通过”.”运算符操作自己的变量或通过“.”运算符调用类中的方法
访问限制修饰符private、protected和public(都是java的关键字,用来修饰成员变量或方法)
1.private 该类的对象出现的位置是其他另外一个类,那么该对象不能访问自己的private成员
2.Public 该类的对象总能访问自己的public成员
3.Protected 该类的对象出现的位置是同包的一个类,那么该对象能访问自己的protected成员
4.友好
注意:在编写类的时,类中实例方法总是可以操作该类中的实例变量和类变量;类方法总是可以操作该类中的类变量,与访问限制符无关
封装(private关键字)
封装:把对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式;
封装的体现:1.变量:使用private修饰,这就是变量的封装;
2.方法:是一个最基本封装体,封装了多条代码;
3.类:也是一个封装体,封装了多个方法
对象数组
如图所示
在这里插入图片描述
Private关键字(私有)
它可以用来修饰类中的成员(成员变量,成员方法)
Private的特点:修饰的成员只能在当前类中访问,其他类中无法直接访问;
引用数据类型(类)
引用数据类型分类:1.Java提供好的类
2.自己创建的类
类的定义格式:创建java文件,与类名相同
Public class 类名{
数据类型 属性名称1;
数据类型 属性类型2;
。。。
属性定义:修饰符 数据类型 变量名 = 值
方法定义:修饰符 返回值类型 方法名(参数列表){
}
}
Scanner类
Scanner类属于引用数据类型
引用数据类型使用格式:数据类型 变量名=new 数据类型();
ArrayLis
t集合(也是引用数据类型)
使用步骤:1.导入包java.util包中
2.创建引用类型的变量
数据类型<集合存储的数据类型> 变量名 = new 数据类型<集合存储的数据类型> ();
集合存储的数据类型:要将数据存储到集合的容器中
创建集合引用变量时,必须要指定好存储的类型是什么
ArrayList array = new ArrayList();
3.变量名.方法
注意:1.集合存储的数据,8个基本数据类型对应8个引用类型;
2.集合存储引用类型,不存储基本类型
8种基本数据类型所对应的引用数据类型如下图:
在这里插入图片描述
ArrayList 集合的方法:
Add(参数) 向集合中添加元素,数据存储进去
Add(int索引,存储的元素)将元素添加到指定的索引上
方法中的参数类型,定义集合对象时的类型是一致
Get(int index)取出集合中的元素,get方法的参数,写入索引
Size()返回集合的长度,集合存储元素的个数
Set(int索引,修改后的元素)将指定索引的元素进行修改
Remove(int索引)删除指定索引上的元素
Clear()清空集合中的所有元素
总结:1.类中不需要对外提供的内容都私有化,包括属性和方法;
2.以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问;
注意:私有仅仅是封装的体现形式而已
方法
方法的语法格式:
修饰符 返回值类型 方法的名字 (参数列表…){
方法的功能主体
循环,判断,变量,比较,运算
return;
}

修饰符:固定写法:public static
返回值类型:方法在运算后,结果的数据
方法名:自定义名字,满足标识符规范,方法名首字母小写,后面每个单词首字母大写
参数列表:方法的运算过程中,是否有未知的数据,如果有未知数据,定义在参数列表上(定义变量)
Return:方法的返回,将计算的结果返回,结束方法
调用方法:在方法main中调用方法
方法定义和使用的注意事项:

1.法不能定义在另一个方法的里面
2.写错方法名字
3.写错参数列表
1.方法返回值是void,方法中可以省略return不写
2.方法返回值类型,和return后面数据类型必须匹配
3.方法重复定义问题
4.调用方法时,返回值是void,不能写在输出语句中
方法调用中传递的数据类型
2.方法参数是基本数据类型(代码如图所示)
方法参数是引用类型:传递的是地址(代码如图所示)
在这里插入图片描述
Random随机数类
Java中已经有的引用类型 Random类,作用是产生随机数
步骤:
1.导入包,Random类也在java.util文件夹
2.公式:创建出Random类型的变量
Random ran = new Random();
3.变量.调用Random类中的功能产生随机数
Int i = ran.nextInt(50);(范围0-49)
Random类提供功能,名字为nextInt()产生一个随机数,结果是int类型,随机数范围在功能nextInt(整数s),s:随机出来的范围在0-s之间的随机数,不包含s本身

产生浮点的随机数:功能名字 nextDouble(),产生随机数范围固定为0.0-1.0之间(不包含1.0)
随机数又称为伪随机数,虚拟机根据人写好的一个算法生成出来的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值