java⾯向对象的总结
1.⾯向对象
⾯向过程:当需要实现⼀个功能时,每个具体的步骤都要亲⼒亲为,详细处理每个细节。(强调过程)
⾯向对象:当需要实现⼀个功能时,不关⼼具体的步骤,⽽是⼀个已经具有该功能的的⼈或物体,通过该⼈或物体来实现这个功能。(强调对象)
⾯向对象编程(Object Oriented Programing,OOP)的本质:以类的⽅式组织代码,以对象的组织(封装)数据。
⾯向对象的三⼤基本特征:封装、继承和多态。
类:是⼀组相关属性和⾏为的集合,可以看成是⼀类事务的模板,使⽤事物的属性特征和⾏为特征来描述该类事物。
1. 属性:就是该事物的状态信息。
2. ⾏为:就是该事物能够做什么。
对象:是⼀类事物的具体体现,对象是类的⼀个实例,必然具备该类事物的属性和⾏为。
类与对象的关系
1. 类是对⼀类事物的描述,是抽象的。
2. 对象是⼀类事物的实例,是具体的。
3. 类是对象的模板,对象是类的实体。
1.1 对象的使⽤
创建对象:
类名对象名=new类名();
使⽤对象访问类中的成员:
对象名.成员变量;
对象名.成员⽅法();
对象的使⽤格式举例:
对应到Java的类当中:
成员变量(属性):
String name;// 姓名
int age;// 年龄
成员⽅法(⾏为):
public void eat(){}// 吃饭
public void sleep(){}// 睡觉
public void study(){}// 学习
注意事项:
1.成员变量是直接定义在类当中的,在⽅法外边。
2.成员⽅法不要写static关键字。
*/
public class Student {
// 成员变量
String name;// 姓名
int age;// 姓名
// 成员⽅法
public void eat(){
System.out.println("吃饭饭!");
}
public void sleep(){
System.out.println("睡觉觉!");
}
public void study(){
System.out.println("学习!");
}
}
成员变量的默认值如图所⽰
1.2 对象内存图
1.⼀个对象,调⽤⼀个⽅法内存图
2.两个对象调⽤⼀个⽅法内存图
3.将⼀个对象赋值给令⼀个对象的内存图
4.使⽤对象作为⽅法参数内存图
5.使⽤对象类型作为⽅法返回值内存图
1.3 成员变量和局部变量
变量根据定位位置的不同,有不同的名字。如下图所⽰:
(1)在类中的位置不同
成员变量:类中,⽅法外
局部变量:⽅法中或者⽅法声明上(形式参数)
(2)作⽤范围不⼀样
成员变量:类中
局部变量:⽅法中
(3)初始值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,最后使⽤
(4)在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
(5)⽣命周期不同
成员变量:随着对象的创建⽽存在,随着对象的消失java面向对象的特征有哪些方面
局部变量:随着⽅法的调⽤⽽存在,随着⽅法的调⽤完毕⽽消失
2.封装
封装:禁⽌直接访问⼀个对象中的数据,应通过操作接⼝来访问。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
1.⽅法就是⼀种封装
2.关键字private也是⼀种封装
2.1 private的使⽤格式
private数据类型变量名;
1.使⽤private修饰成员变量
2.提供getXxx⽅法/setXxx⽅法/isXxx⽅法,可以访问成员变量,代码如下:
问题描述:定义Person的年龄时,⽆法阻⽌不合理的数值被设置进来。
解决⽅案:⽤private关键字将需要保护的成员变量进⾏修饰。
⼀旦使⽤了private进⾏修饰,那么本类当中仍然可以随意访问。
但是!超出了本类范围之外就不能再直接访问了。
间接访问private成员变量,就是定义⼀对⼉Getter/Setter⽅法
必须叫setXxx或者是getXxx命名规则。
对于Getter来说,不能有参数,返回值类型和成员变量对应;
对于Setter来说,不能有返回值,参数类型和成员变量对应。
对于基本类型当中的boolean值,Getter⽅法⼀定要写成isXxx的形式,⽽setXxx规则不变。 */
public class Person {
private String name;// 姓名
private int age;// 年龄
private boolean male;// 是不是爷们⼉
public void setMale(boolean b){
male = b;
}
public boolean isMale(){
return male;
}
public void show(){
System.out.println("我叫:"+ name +",年龄:"+ age);
}
// 这个成员⽅法,专门⽤于向age设置数据
public void setAge(int num){
if(num <100&& num >=9){// 如果是合理情况
age = num;
}else{
System.out.println("数据不合理!");
}
}
// 这个成员⽅法,专门私语获取age的数据
public int getAge(){
return age;
}
}
2.2 封装优化-----this 关键字
this.成员变量名;
使⽤this修饰⽅法中的变量,解决成员变量被隐藏的问题,代码如下:
当⽅法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使⽤局部变量。
如果需要访问本类当中的成员变量,需要使⽤格式:
this.成员变量名
“通过谁调⽤的⽅法,谁就是this。”
*/
public class Student{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
2.3 封装优化------构造⽅法
当⼀个对象被创建时候,构造⽅法⽤来初始化该对象,给对象的成员变量赋初始值。
(⽆论是否⾃定义构造⽅法,所有类都有构造⽅法,因为Java⾃动提供了⼀个⽆参数构造⽅法,⼀旦⾃⼰定义了构造⽅法,Java⾃动提供的默认⽆参数构造⽅法就会失效。)
构造⽅法的定义格式
修饰符构造⽅法名(参数列表){
//⽅法体
}
构造⽅法的写法上,⽅法名与它所在的类名相同。它没有返回值,所有不需要返回值类型,甚⾄不需要void,使⽤构造⽅法后,代码如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。