1、面向对象的思想
anything is an Object(万物皆对象)
符合人们客观看待世界的规律
2、抽象,从对具体的对象中抽取有用信息。
对象有其固有属性,对象的方法,即对象的行为(对象能做什么)
对象本身是简单的(功能简单),多个对象可以组成复杂的系统(对象之间彼此调用对方的方法)
3、面向对象的优点
1)对象应当是各司其职(功能简单),各尽所能(把自己的功能作到最好)。(弱耦合性实现了前面所述的对象的特点)
2)对象的耦合性,是对象之间的联系,对象和系统之间的联系。
对象的耦合性要尽量的弱,也就是对象之间的联系尽可能的弱,对象和系统之间的联系尽可能的弱。
弱耦合性要通过一个标准来实现
3)可重用性
对象的功能越简单,复用性就越好。(对象的耦合性弱,复用性就比较强)
4)可扩展性
系统的可插入性,是在系统中加入新的对象之后的系统稳定性。
对象的可替换性,是在系统中替换原有的对象之后的系统的稳定性。
4、面向过程和面向对象的比较
面向过程是先有算法,后又数据结构 --- (怎么解决问题)
面向对象是先有对象(数据结构),后有算法(对象间的方法调用) --- (用什么做)
5、类的定义
1)属性
类型 变量名; --> 实例变量,系统赋初始值
默认值 使用范围 命名冲突
实例变量 系统赋初始值 在类的内部使用 允许实例变量和局部变量发生命名冲突,变量的值->局部优先
局部变量 先赋值后使用 定义他的代码块 同范围内不允许两个局部变量发生命名冲突
2)方法的定义:
不允许方法的声明和实现分开
方法声明的组成:
(a)方法的修饰符(0或多个修饰符出现的顺序无关) |
(b)方法的返回值类型 |顺
(c)方法名 |序
(d)方法的参数表 |向
(e)方法中允许抛出的异常 |下
V
6、方法的重载
java中方法的重载(overload)方法名相同,参数表不同(个数,类型,排列顺序),其他部分可以不同。
调用时要给出明确参数并确定调用某一方法。在编译时,编译器会根据参数选择适当的方法,所以重载也叫编译时多态。
** 方法的重载可以屏蔽一个对象同一类方法由于参数不同所造成的差异 **
向上就近匹配原则
如果方法的参数表中的数据类型和调用时给出的参数类型不尽相同时会根据向上匹配的就近原则。(类型就近向上转化匹配)
public void m(byte a,short b){
System.out.println("m(byte,short)");
}
public void m(short a,byte b){
System.out.println("m(short,byte)");
}
此时若用2个byte作为参数调用m()方法,编译会出错,因为按照向上就近匹配原则,提升哪个都可以,出现语义不明确的错误
7、构造方法
1)方法名与类名相同,无返回值
2)系统提供默认无参的,空的构造方法
3)若自定义一个有参的构造方法,则系统将不提供无参的,空的构造方法
不能手工调用,在一个对象的生命周期中,只会被调用一次
8、对象的创建
Java在堆中创建对象的过程:
1)分配空间
2)初始化属性,若声明实例变量的时候没有初始化,用默认值初始化属性
3)调用某个构造方法(前提:不考虑继承关系)
Student s; //声明一个Student类的对象变量
s = new Student(); //调用Student类的无参的构造方法,创建一个对象,把这个对象的地址赋给一个Student类的引用
(引用指向了这个对象,引用中保存对象的首地址,以后都是通过引用访问这个对象的属性和方法)
s.age s引用所指向的对象的age属性
9、变量
包括简单变量(原始数据类型),对象变量。
简单变量传值,对象变量传址!
static void method3(Student s){
s=new Student(); //创建一个新对象,把对象的地址赋给形参的引用
s.age=20; //改变新对象的状态
}
Student stu=new Student();
System.out.println(stu.age); // 打印出Student类的age属性的初始值
method3(stu); //method3方法返回,形参s指向的被改变的对象已经成为了垃圾对象
System.out.println(stu.age); //打印的仍是原来那个对象的age的值
10、this
是一个引用,指向的是自己,即当前对象(哪个对象调用了方法,哪个对象就是当前对象)
可以用来区分实例变量和局部变量。this.age = age ;
this(),他表示调用本类其他的构造方法,注,只能写在构造方法的第一行。
项目练习:
项目名称:Bank Account Management System 银行账户管理系统 简称BAM
项目描述:这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户.
项目实施方式:这是一个同步练习,随着达内CoreJava课程的深入,这个项目将趋于完整,学员的任务是随着知识点的深入,完成每一个进阶的项目要求.
练习1:
(面向对象基础语法)
写一个账户类(Account)
属性:
id:账户号码 长整数
password:账户密码 String
name:真实姓名 String
personId:身份证号码 String
email:客户的电子邮箱 String
balance:账户余额 double
方法:
deposit: 存款方法,参数是double型的金额
withdraw:取款方法,参数是double型的金额
构造方法:
有参和无参,有参构造方法用于设置必要的属性
anything is an Object(万物皆对象)
符合人们客观看待世界的规律
2、抽象,从对具体的对象中抽取有用信息。
对象有其固有属性,对象的方法,即对象的行为(对象能做什么)
对象本身是简单的(功能简单),多个对象可以组成复杂的系统(对象之间彼此调用对方的方法)
3、面向对象的优点
1)对象应当是各司其职(功能简单),各尽所能(把自己的功能作到最好)。(弱耦合性实现了前面所述的对象的特点)
2)对象的耦合性,是对象之间的联系,对象和系统之间的联系。
对象的耦合性要尽量的弱,也就是对象之间的联系尽可能的弱,对象和系统之间的联系尽可能的弱。
弱耦合性要通过一个标准来实现
3)可重用性
对象的功能越简单,复用性就越好。(对象的耦合性弱,复用性就比较强)
4)可扩展性
系统的可插入性,是在系统中加入新的对象之后的系统稳定性。
对象的可替换性,是在系统中替换原有的对象之后的系统的稳定性。
4、面向过程和面向对象的比较
面向过程是先有算法,后又数据结构 --- (怎么解决问题)
面向对象是先有对象(数据结构),后有算法(对象间的方法调用) --- (用什么做)
5、类的定义
1)属性
类型 变量名; --> 实例变量,系统赋初始值
默认值 使用范围 命名冲突
实例变量 系统赋初始值 在类的内部使用 允许实例变量和局部变量发生命名冲突,变量的值->局部优先
局部变量 先赋值后使用 定义他的代码块 同范围内不允许两个局部变量发生命名冲突
2)方法的定义:
不允许方法的声明和实现分开
方法声明的组成:
(a)方法的修饰符(0或多个修饰符出现的顺序无关) |
(b)方法的返回值类型 |顺
(c)方法名 |序
(d)方法的参数表 |向
(e)方法中允许抛出的异常 |下
V
6、方法的重载
java中方法的重载(overload)方法名相同,参数表不同(个数,类型,排列顺序),其他部分可以不同。
调用时要给出明确参数并确定调用某一方法。在编译时,编译器会根据参数选择适当的方法,所以重载也叫编译时多态。
** 方法的重载可以屏蔽一个对象同一类方法由于参数不同所造成的差异 **
向上就近匹配原则
如果方法的参数表中的数据类型和调用时给出的参数类型不尽相同时会根据向上匹配的就近原则。(类型就近向上转化匹配)
public void m(byte a,short b){
System.out.println("m(byte,short)");
}
public void m(short a,byte b){
System.out.println("m(short,byte)");
}
此时若用2个byte作为参数调用m()方法,编译会出错,因为按照向上就近匹配原则,提升哪个都可以,出现语义不明确的错误
7、构造方法
1)方法名与类名相同,无返回值
2)系统提供默认无参的,空的构造方法
3)若自定义一个有参的构造方法,则系统将不提供无参的,空的构造方法
不能手工调用,在一个对象的生命周期中,只会被调用一次
8、对象的创建
Java在堆中创建对象的过程:
1)分配空间
2)初始化属性,若声明实例变量的时候没有初始化,用默认值初始化属性
3)调用某个构造方法(前提:不考虑继承关系)
Student s; //声明一个Student类的对象变量
s = new Student(); //调用Student类的无参的构造方法,创建一个对象,把这个对象的地址赋给一个Student类的引用
(引用指向了这个对象,引用中保存对象的首地址,以后都是通过引用访问这个对象的属性和方法)
s.age s引用所指向的对象的age属性
9、变量
包括简单变量(原始数据类型),对象变量。
简单变量传值,对象变量传址!
static void method3(Student s){
s=new Student(); //创建一个新对象,把对象的地址赋给形参的引用
s.age=20; //改变新对象的状态
}
Student stu=new Student();
System.out.println(stu.age); // 打印出Student类的age属性的初始值
method3(stu); //method3方法返回,形参s指向的被改变的对象已经成为了垃圾对象
System.out.println(stu.age); //打印的仍是原来那个对象的age的值
10、this
是一个引用,指向的是自己,即当前对象(哪个对象调用了方法,哪个对象就是当前对象)
可以用来区分实例变量和局部变量。this.age = age ;
this(),他表示调用本类其他的构造方法,注,只能写在构造方法的第一行。
项目练习:
项目名称:Bank Account Management System 银行账户管理系统 简称BAM
项目描述:这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户.
项目实施方式:这是一个同步练习,随着达内CoreJava课程的深入,这个项目将趋于完整,学员的任务是随着知识点的深入,完成每一个进阶的项目要求.
练习1:
(面向对象基础语法)
写一个账户类(Account)
属性:
id:账户号码 长整数
password:账户密码 String
name:真实姓名 String
personId:身份证号码 String
email:客户的电子邮箱 String
balance:账户余额 double
方法:
deposit: 存款方法,参数是double型的金额
withdraw:取款方法,参数是double型的金额
构造方法:
有参和无参,有参构造方法用于设置必要的属性