JavaSE内容整理四

Java类的基本结构

一、面向对象、类、对象、封装的概念
1、面向对象与面向过程的编程思想
我开车要去北京
面向过程:
我开车,我挂挡,我踩油门,我走了,我过河北…
面向对象:
1、我命令车去北京
2、车怎么去不关我的事
信息封装在车的内部
我不用了解车整个开动的过程
2、对象
万物皆对象

对象实质是:属性(成员变量)+行为(方法或者函数)
我的车
属性(成员变量):品牌–大众 价格–20万 颜色–白色
行为(方法): 开动 加速 减速 查看品牌 设置品牌 查看颜色 查看价格

张三
属性:姓名–张三、性别–男、身高–180、民族-汉……
行为:跑、跳、工作、唱歌……

我的招商银行一卡通
属性:账号–213234214、密码–123213、余额–207……
行为:存款、取款、转账……

3、类
(1)类是具有共同属性和行为的对象的集合
(2)类是Java程序的基本组成单位
(3)通过类可以实例化多个该类的对象,每个对象的属性值不同,可以说类好比设计图纸,而对象好比根据图纸建设出来的多栋楼房。
4、类与对象的关系
在这里插入图片描述
5、封装性
封装的特性能够让服务提供者把它服务的细节隐藏掉,你只需要提交请求与传递它需要的参数,它就会给你返回结果,而这个结果是如何产生的,经过了多少复杂运算,经过多少次数据读取,你都不用管,只要它给你结果就好了。
体现:属性私有化、方法公有化
6、类的基本结构
属性、方法、构造方法、块、内部类(注释、注解)
注释类型://单行注释 /* / 多行注释 /* */ 文档注释

二、类的结构
1、分析车票类
属性(成员变量):车次 trainId 价格 price 余票remain
行为:查看车次 查看价格 查看余票 设置车次 设置价格 设置余票 买票 退票
2、类的声明形式:
【访问权限修饰符】【修饰符】 class 类名 {
成员列表
}
注意:(1)【】可选可不选的
(2)类名首字母要大写

3、成员变量的声明形式:
【访问权限修饰符】【修饰符】 数据类型 成员变量名 【=初始值】
注意:(1)数据类型可以是基本数据类型也可以是引用数据类型
(2)变量名首字母小写

4、方法的声明形式:
【访问权限修饰符】【修饰符】 返回值类型 方法名(形参列表){
方法体;
return 返回值;
}
注意:(1)方法名首字母小写
(2)有返回值的情况:返回值和返回值类型一定对应 eg:1+1=? return 2 int
(3)没有返回值的情况:返回值类型用void , return ;或者return省略
(4)形参列表的语法(数据类型1 参数名1,数据类型2 参数2…):参数可以是0,1或者多个
(5)方法里面不能写方法
(6)定义方法需思考三点
方法是否有返回的结果,如果有,返回什么类型的结果?
明确方法是否需要参数,如果需要,需要几个什么类型的参数?
方法如何才能正确得到想要的结果?
5、创建对象,调用方法
(1)要想使用一个类的属性和方法,那么必须要创建该类的对象,通过对象名.属性/对象名.方法()来调用。
(2)如何创建对象
类名 对象名 = new 构造方法()(构造方法名和类名一致)
(3)实参–实际参数,一个具体的值或者是有的值的变量 实参的数据类型、个数、顺序一定要和方法的形参一致
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

内存分析
在这里插入图片描述

6、成员变量和局部变量的区别
(1)成员变量:类体内方法外 ;可以在声明时赋初始值;若不赋值,会有默认初始值; 作用域:找括号,出来括号就不认识了
(2)局部变量:方法体内,包括参数;声明赋值之后才能使用,否则报错; 作用域:找括号,出来括号就不认识了
7、值传递
(1)基本数据类和引用数据类型都是值传递
(2)基本数据类型值传递的是值,独立的空间,相互不影响
(3)引用类型传递的是地址
(4)String类型和基本数据类型的值传递一致
在这里插入图片描述
结果:Chinasofti@java
在这里插入图片描述

8、方法重载
(1)方法名相同参数不同(参数类型不同、参数个数不同、参数顺序不同)
(2)只有返回值类型不同,不是方法重载
(3)编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法

9、可变参数
(1)Java把可变参数当做数组处理,适用于参数个数不确定,类型确定
(2)可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数.
(3)可变参数用…代替标识, …位于变量类型和变量名之间,前后有无空格都可以
(4)用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数.
public class Test {
public static void main(String[] args) {
Test test = new Test();
int sum = test.add(1);
System.out.println(sum);
}

public int add(int a ,int…ary ){
int sum = 0;
for(int i=0;i<ary.length;i++){
sum+=ary[i];
}
sum+=a;
return sum;
}
}
10、构造方法
(1)构造方法的声明形式:
【访问权限修饰符】类名(形参列表){
//可以写符合一切java规范的代码,但是我们通常对成员变量进行初始化
}
注意:1.没有方法的返回值,连void的都没有
2.可以有0、1、多个
3.形参列表的顺序 个数 类型必须和实参一致
4.可以写符合一切java规范的代码,但是我们通常对成员变量进行初始化
5.类里会默认有一个无参的构造方法,但是当写了有参数的构造方法以后,这个无参构造方法就失效了,如果要想继续使用,重新写一个无参的构造方法

(2)构造方法和普通方法的区别
构造方法:
1.是用在实例化对象的时候调用的
2.没有返回值,连void都没有
3.方法名必须与类名相同
4.不能使用修饰符,包括static、final、abstract
普通方法:
1.分静态方法和非静态方法
2.可以使用修饰符,包括static、final、abstract
3.静态方法可用类名直接调用,非静态方法要用对象调用(后续学习)
4.返回值可有可无,如果没有声明时要加void
5.方法名最好不跟类名一样
11、构造方法重载
同名不同参
// 构造方法
public Ticket() {
}

// 有参数的构造---初始化
public Ticket(String trainId, double price, int remain) {
	// 赋值操作
	this.trainId = trainId; // this 访问成员变量
	this.price = price;
	this.remain = remain;
}

// 有一个参数的构造方法
public Ticket(String trainId) {
	this.trainId = trainId;
}

12、this关键字
this代表本类对应的引用。
(1)访问成员变量 this.trainId;
(2)访问构造方法 this(实参列表);
(3)访问成员方法 this.getTrainId();
13、引用数据类型的使用场景
(1)作为属性使用
(2)作为参数使用
(3)作为方法返回值使用
14、块
(1)实例块:每次在调用构造方法之前调用(每创建一个对象,就要调用一下实例块)
{
//符合java规范的代码
}
(2)静态块:不管new多少次对象实例,类加载的时候只执行一次
static{
//符合java规范的代码
}
15、初始化代码块和构造方法的运行顺序
静态块 实例块 构造方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值