实训实习第一周day03
Day03
1. 面向对象
面向过程:是一种编程思想,就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:就是一种编程思想,是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
2. 类与对象
1.什么是类?
类是具备某些共同特征的实体的集合,是对所具有相同特征实体的抽象, 例如人类、车类、星球类,动物类, 猪类等
2.什么是对象?
对象是类的实例,简单的认为对象就是类中具体的个体
通常都会将对象划分为两个部分,即动态部分(方法)与静态部分(成员变量)。
①静态部分:顾名思义就是不能动的部分,这个部分被称为“属性”,如一个人,它包括高矮、胖瘦、性别、年龄等属性——成员变量。
②动态部分:人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分)——方法。
3. 设计类
设计类语法:
public class 类名{
//可编写 0 到 N 个成员变量
[修饰符] 数据类型 变量名 1;
[修饰符] 数据类型 变量名 2;
//可编写 0 到 N 个成员方法
[修饰符] 返回值类型 方法名称(参数){
//方法体
}
}
类规范书写:
① 类名大驼峰,见名知意
② 成员变量名小驼峰,见名知意
③ 类和成员变量上方必须写文档注释;
修饰符
1. 类修饰符
-
public(访问控制符): 将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。
-
abstract:将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。
-
final:将一个类申明为最终(即非继承类),表示他不能被其他类继承。
-
默认不写:默认的修饰符,只有在相同包中的对象才能使用这样的类。
2. 成员变量修饰符
-
public(公共访问控制符):指定该变量为公共的,他可以被任何对象的方法访问。
-
private(私有访问控制符):指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。
-
protected(保护访问控制符):指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。
-
默认不写 :在同一个包中的类可以访问,其他包中的类不能访问。
-
final:最终修饰符,指定此变量的值不能变。
-
static(静态修饰符):指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类。
-
transient(过度修饰符):指定该变量是系统保留,暂无特别作用的临时性变量。
-
volatile:指定该变量可以同时被几个线程控制和修改。
3. 方法修饰符
-
public(公共控制符: 指定此方法可以被自己和其他的类访问
-
private(私有控制符):指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)
-
protected(保护访问控制符):指定该方法可以被它的类和子类进行访问。
-
final:指定该方法不能被重载。
-
static:指定不需要实例化就可以激活的一个方法。
-
synchronize:同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。
-
native:本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的
4. 创建对象和成员变量赋值取值
1.创建对象
创建对象语法:
类名 对象名 = new 类名();
例如:
public class StudentTest {
public static void main(String[] args) {
//3.1. 创建对象(相当于复制模板): 语法: 类名 对象名 = new 类名();
Student student = new Student();//必须声明一个Student类型的变量接收当前对象地址
}
}
2.给对象成员变量赋值
给成员变量赋值语法:
对象名.成员变量 = 值; //注意:必须值和成员变量数据类型一致
例如:
public class StudentTest {
public static void main(String[] args) {
//3.1. 创建对象(相当于复制模板): 语法:类名 对象名 = new 类名();
Student student = new Student();//必须声明一个Student类型的变量接收当前对象地址
//3.2. 对象赋值(填写信息) 语法: 对象名.成员变量 = 值;
student.name = "苍老师";
student.age = 37;
}
}
3.对象取值和对象调用实例方法
对象取值语法:
对象名.成员变量 ;
对象调用实例方法:
对象名.方法名(…);
例如:
public class StudentTest {
public static void main(String[] args) {
//3.1. 创建对象(相当于复制模板): 语法:类名 对象名 = new 类名();
Student student = new Student();//必须声明一个Student类型的变量接收当前对象地址
//3.2. 对象赋值(填写信息) 语法: 对象名.成员变量 = 值;
student.name = "苍老师";
student.age = 37;
//3.3. 对象取值(相当于查询信息) 语法: 对象名.成员变量;
System.out.println(student.name);//"苍老师"
System.out.println(student.age);//37
//3.4. 对象调用非static(实例)方法 语法: 对象名.方法名(...);
student.study();
}
}
5. 构造方法
1.构造方法引入
new Student(); 创建一个学生类的对象
上面代码本质是调用Student中的无参数的构造方法!
2.什么是构造方法
-
构造方法的结构和普通方法类似,但是和普通方法完全不同两个代码块;
-
构造方法也是方法,意味着使用了构造方法,方法会执行,也能完成功能
-
构造方法就是一个代码块【就是一个结构 ,构造方法和 字段 方法一样都是一个类中的成员之一】
-
构造方法也该存在于类的结构体中
3.构造方法语法:
-
构造方法的名字和类名完全一致(包括大小写完全一致)
-
没有返回值类型(void也不行)
-
构造方法方法体不能返回任何的值(即不能在方法体中return 值)
-
其他的和普通方法类似 ,可以有修饰符(public、protected、private、默认),可以有形参列表
-
构造方法必须有方法体
-
构造方法不能有任何非访问性质的修饰符修饰,例如 static、final、synchronized、abstract等都不能修饰构造方法。
注意:new Student() 这个整体既是一个Student对象,又是调用的Student的无参数构造方法
4.构造方法特点
① 每一个类中都至少有一个构造方法;
② 如果没有看到(显示的),那么存在一个隐式的无参数的构造方法;
③ 如果一个类中有显示的构造方法,那么隐式的无参的构造方法就不存在了;
5.构造方法注意事项和小结
1.普通方法不要和类名一致,行业默认规则;
2.普通方法(Method)和构造方法(Constructor)是不同的两种结构
3.普通方法的调用 : 3种
类名.方法名(…); -有static修饰的
对象名.方法名(…);
方法名(…); --同一个类里面 都要static 或 都没有static修饰
4.构造方法的调用 :
(目前为止) new 类名(...);
6. 包(package)
包(package)概念:简单的理解包就是一个文件夹
包作用:(不是单纯的文件隔离,目的是告诉jvm知道文件隔离)
① 可以管理代码结构
500W项目(10000个文件) 没有包不好管理
② 可以避免类名冲突的问题
一个项目中有可能多个类名一样
定义包
包命名规范:
一般是公司域名反过来写+项目名+模块名字+子模块名
包名中应该全部都是英文,并且是小写的
例如 : cxjcloud.cn 域名
package cn.cxjcloud.erp.oa.domain;自动化办公
package cn.cxjcloud.erp.sa.entity; 系统管理
注意:不要写成nc.
导入包(其实本质是导入包中的类)
导入包的语法 : import 包名.子包名.类名;
注意:
-
导入包的代码应该在声明包(就是该类所在的包)的后面,声明类的前面
-
import java.util.*; 表示导入本包中所有会使用到的,util包中的类;
只会导入util包下面直接的类型,不包括util包的子包中的类型
- java.lang是核心包,下面的直接类型是自动导入的;
例如:String、System类
lang包的子包中的类型不会自动导入,需要手动导入
- 在一个类中会用到同名不同包的时候必须使用全限定路径
例如:同时使用java.util.Date和java.sql.Date
7.封装(重点)
1.封装的作用
封装是为了保护内部数据的安全:
1.不希望在外部类中随意访问类中的成员变量
-
达到权限要求的才能访问。
-
只是获取数据的时候,例如 单例模式
2.怎么封装
- 如何控制程序中的访问 ?
通过给类中的成员(字段,方法,构造方法)添加访问权限修饰符来实现封装(访问控制)
- 什么是访问权限:简单的认为访问权限就是不同级别的人能够干不同级别的事,不同级别的人能看到的页面是不同的
例子:比如做一个系统,不同人登录进去的访问权限不一样;
- 访问权限修饰符:
public 最大权限,被其修饰的成员,在任意目录下,都可以访问到 (所有类)
protected 在同包类和子类中都可以访问
默认不写 只能在同包类中访问
private 只能在当前类中访问
3.封装的步骤(重点)
-
私有化成员变量(用private修饰成员变量)
-
为每一个成员变量提供合理的
getXxx()方法 获取成员变量的值,如果当前成员变量类型是boolean类型,将getXxx()改为 isXxx()
setXxx(...)方法 设置成员变量的值
-
提供一个无参构造
-
该类用public修饰
4.封装的注意事项
-
不是只有private才叫封装,private只是最大限度的封装而已。
-
get和set方法都是只能获取或者赋值一个成员变量,不能set(String n,double m,boolean v)赋值3个成员变量
-
单一职能原则:功能最小化,不要想着一个方法写完所有的功能,因为代码复用率高
8. this注意和小结
1.this用途:
-
解决局部变量和成员变量的二义性(掌握) --> 注意 set/get方法 构造方法
-
在本类之间 ,构造方法之间的相互调用 this()调用无参数的构造方法,this(...)可以添加参数,表示调用有参数的构造方法 (掌握)
-
this作为参数传递,this作为返回值 (了解)
2.this注意事项:
-
this不能在静态的方法中使用 : 无法从静态上下文中引用非静态成员this
-
static类级别,this对象级别
static修饰的是属于类被共享,而this是某一个具体的对象地址

浙公网安备 33010602011771号