文章目录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/20f8c697d589a8d4fd0b25f0785302a5.png#pic_center)
第七章 面向对象编程(基础) 下
![](https://i-blog.csdnimg.cn/blog_migrate/7d12c98dbf430340e3ae64e72a87e741.gif)
1.IDE(集成开发环境) - IDEA
IDEA介绍
1.IDEA 全称 IntelliJ IDEA
2.在业界被公认为最好的Java开发工具
3.IDEA是JetBrains公司的产品, 总部位于捷克的首都布拉格
4.除了支持Java开发, 还支持HTML, CSS, PHP, MySQL, Python等
Eclipse介绍
1.Eclipse是一个开放源代码的, 基于Java的可扩展开发平台.
2.最初是由IBM公司耗资3000万美金开发的下一代IDE开发环境
3.2001年11月贡献给开源社区
4.Eclipse是目前最优秀的Java开发工具之一
IDEA下载安装
官网: https://www.jetbrains.com/idea/download/?section=windows
此电脑⇒ 属性⇒ 系统类型 ⇒ 查看操作系统位数
IDEA使用
使用IDEA创建Java项目(project), 看看IDEA是如何使用的, IDEA是以项目的概念, 来管理我们的java源码的
1.创建一个java项目 - hello
2.创建一个Hello类
3.调整字体大小
4.运行项目
●IDEA使用技巧和经验
√设置字体
菜单 file -> settings
字体加粗
更换主题
√字符编码设置
●课堂练习
使用IDEA开发一个java项目 testpro01, 创建一个类MyTools, 编写一个方法, 可以完成对int数组冒泡排序的功能.
IDEA常用快捷键
1.删除当前行, 默认是ctrl + Y, 自己配置 ctrl + d
2.复制当前行, 自己配置 ctrl + alt + 向下光标
3.补全代码 alt + / 【类似cmd的tab键】
4.添加注释和取消注释 ctrl + / 【第一次是添加注释, 第二次是取消注释】
5.导入该行需要的类, 先配置auto import, 然后使用 alt+enter 即可.
6.快速格式化代码 ctrl + alt + L
7.快速运行程序 自己定义 alt + R
8.生成构造器等 alt + insert [提高开发效率]
9.查看一个类的层级关系 ctrl + H [学习继承后, 非常有用]
10.把光标放在一个方法上, 输入 ctrl + B, 可以定位到方法 [学习继承后, 非常有用]
11.自动地分配变量名, 通过 在后面 .var [最喜欢的]
12.还有很多其它的快捷键…
这是作为一个专业Java程序员必备技能.
模板/自定义模板
菜单 file -> settings -> editor -> Live templates
查看有哪些模板快捷键/可以自己增加模板
模板可以高效地完成开发, 提高速度
2.包
看一个应用场景
现在有两个程序员共同开发一个java项目, 程序员xiaoming希望定义一个类取名 Dog, 程序员xiaoqiang也想定义一个类也叫 Dog. 两个程序员吵了起来, 怎么办?
包的三大作用
1.区分相同名字的类
2.当类很多时, 可以很好地管理类 看Java API 文档
把功能相同的或者相似的类放在同一个包管理
查看jdk的源码文件
3.控制访问范围
包基本语法
package com.zzw
说明:
1.package 关键字, 表示打包(把什么进行打包呢? ⇒ 把下面写的类进行打包)
2.com.zzw: 表示包名
包的本质分析(原理)
包的本质 实际上就是创建不同的文件夹/目录, 来保存类文件, 画出示意图
虽然两个Dog类重名, 但是它们是在不同的文件夹下面, 也就是说在不同的包下面, 这是允许的.
快速入门
1.新建chapter08
java项目.
2.使用打包技术来解决上面的问题
不同包下Dog类
3.测试com.use.Test
package com.use;
import com.xiaoqiang.Dog;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
System.out.println(dog);//com.xiaoqiang.Dog@1b6d3586
com.xiaoming.Dog dog1 = new com.xiaoming.Dog();
System.out.println(dog1);//com.xiaoming.Dog@14899482
}
}
包的命名
√ 命名规则
只能包含数字, 字母, 下划线, 小圆点, 但不能用数字开头, 不能是关键字或保留字
demo.class.exec1 //错误 class是关键字
demo.12a //错误 12a 是数字开头
demo.ab12.oa //正确
√ 命名规范
一般是小写字母 + 小圆点, 一般是 com.公司名.项目名.业务模块名
比如: com.zzw.oa.model; com.zzw.oa.controller;
举例:
com.sina.crm.user //用户模块
com.sina.crm.order //订单模块
com.sina.crm.utils //工具类
把不同业务模块的类放在相应的包下面
常用的包
一个包下, 包含很多的类, java中常用的包有:
java.lang.* //lang包是基本包, 默认引入, 不需要再导入
java.util.* //util包, 系统提供的工具包, 工具类, 使用比如 Scanner
java.net.* //网络包, 网络开发
java.awt.* //是做java的界面开发, GUI
如何引入包
com.zzw.pkg包 Import01.java
语法: import 包;
我们引入一个包的主要目的: 是使用该包下的类
比如 import java.util.Scanner; 就只是引入一个类Scanner
import java.util.*; 表示将java.util 包下所有类都引入
推荐需要用到哪个类, 就导入哪个类, 参考ArrayList源码
案例: 使用系统提供 Arrays 完成 数组排序
注意事项和使用细节
com.zzw.pkg.PkgDetail.java
1.package 的作用是声明当前类所在的包, 需要放在类的最上面, 一个类中最多只有一句package
2.import指令 位置放在package的下面, 在类定义前面, 可以有多句且没有顺序要求.
3.访问修饰符
基本介绍
java提供四种访问控制修饰符号, 用于控制方法和属性(成员变量)的访问权限(范围):
- 公开级别: 用public修饰, 对外公开.
- 受保护级别: 用protected修饰, 对子类和同一个包中的类公开.
- 默认级别: 没有修饰符号, 向同一个包的类公开.
- 私有级别: 用private修饰, 只有类本身可以访问, 不对外公开.
4种访问修饰符的访问范围
com.zzw.modifier
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|---|
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | × |
默认 | 没有修饰符 | √ | √ | × | × |
私有 | private | √ | × | × | × |
注意事项和使用细节
1.修饰符可以用来修饰类中的属性, 成员方法以及类
2.只有默认的和public才能修饰类!, 并且遵循上述访问权限的特点.
3.因为没有学习继承, 因此关于在子类中的访问权限, 我们讲完子类后, 再回头讲解.
4.成员方法的访问规则和属性完全一样.
4.封装
英语单词
encapsulation
基本介绍
面向对象三大特征: 封装, 继承和多态
封装介绍
封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起, 数据被保护在内部, 程序的其它部分只有通过被授权的操作[方法], 才能对数据进行操作.
封装的理解和好处
1.隐藏实现细节 方法(连接数据库)<–调用(传入参数…)
2.可以对数据进行验证, 保证安全合理
Person {name, age}
Person p = new Person();
p.name = “赵志伟”;
p.age = 1200 ;
封装的实现步骤 (三步)
1.将属性进行私有化private 【不能直接修改属性】
2.提供一个公共的(public)set方法, 用于对属性进行判断并赋值
public void setXxx(类型 参数名) { //Xxx 表示某个属性
//加入数据验证的业务逻辑
属性 = 参数名;
}
3.提供一个公共的(public)get方法, 用于获取属性的值
public 数据类型 getXxx(类型 参数名) { //权限判断, Xxx 某个属性
return xx;
}
快速入门
√看一个案例com.zzw.encap
在java中如何实现这种类似的控制呢? 请看一个案例. Encapsulation01.java
不能随便查看人的年龄, 工资等隐私, 并对设置的年龄进行合理的验证, 年龄合理就设置, 否则给默认值.年龄必须在 1-120 之间, 工资不能直接查看, name的长度在 2-6 字符.
将构造器和setXxx结合
√看一个案例
//有三个属性的构造器
public Person(String name, int age, double salary) {
// this.name = name;
// this.age = age;
// this.salary = salary;
//我们可以将 set 方法写在构造器中,这样仍然可以验证
setName(name);
setAge(age);
setSalary(salary);
}
课堂练习
com.zzw.encap
包 AccountTest.java
和Account.java
创建程序, 在其中定义两个类: Account和AccountTest类体会Java的封装性.
1.Account类要求具有属性: 姓名 (长度为2为3位或4位), 余额(必须>20), 密码(必须是六位), 如果不满足, 则给出提示信息, 并给默认值.
2.通过setXxx的方法给Account 的属性赋值
3.在AccountTest中测试
提示知识点:
String name = “”;
int len = name.length(); //字符串的长度