第三章 面向对象(上)
3.1面向对****象的概述
- 面向过程
算法分析,解决步骤,细化实现,----函数
- 面向对象
将实际问题中一切事物---对象,抽象出对象的操作,特征,调用对象的操作
面向对象三大特征
- 封装
- 继承
- 多态
3.2 类和对象****
1. 概念
- 对象
一切实际存在的事物
- 类
对象的抽象,描述对象的共同特征
类是对象的图纸,对象是类的实例
2. 类的定义********和使用
- 类的定义
- 对象的创建
- 对象的执行
对象名.属性
对象名.方法()
3.3封装
- 封装
- 属性和方法封装起来---安全
- 只能在类的内部操作,类外不能随意访问
1. 封装的步********骤
- 1-要封装的属性或方法,设置成私有的
- 外部无法修改--锁
- private int age;//私有,私有的成员,只能在类的内部访问
- 2-设置属性,设计一个方法对属性进行修改
- 在修改的方法中,对属性取值进行限制
//不确定的值,可能会变化的值=作为参数
void setAge(int a){
if(a>=18){
age=a;//age值到底是多少,变化
}else{
System.out.println("年龄必须大于18");;
}
}
- 3-类外调用这个方法对属性进行修改
member1.setAge(19 );
2. 访问级别
private<default<protected<public
3. 成员变量和局部变量
定义声明的位置不一样
- 成员变量的位置是在类的{}
- 局部变量的位置是在方法的里面:方法的参数()或方法的{}
局部变量和成员变量同名
- 方法内部,默认使用局部变量
在局部两声明的那个方法的内部,默认使用局部变量
- 要用成员变量,加限定this
public class Student {
//成员变量,属性成员
private int age;//私有,私有的成员,只能在类的内部访问
private String name ;//成员变量
private String hobby;//成员变量
// 参数字符串的值赋值给类的name属性
public void setName(String name) {
//方法的参数name和类的属性name同名
//在方法中默认使用的是方法里定义的局部变量name
//要使用属性name,需要给name加限定,this
this.name = name;
}
}
3.4方法的重****载****
1. 方法的而返回值和参数
方法格式
返回类型 方法名(方法的参数){//方法的操作语句}
- 返回类型
方法执行完成之后,是否会返回数据,
如果有返回数据,返回类型就是返回的那个数据的类型;没有返回数据,返回类型是void类型
- 参数
不确定的值,可能会变化的值=作为参数
- 例:
- 调用方法,让同学帮我打水
- water callStudengAWater(){
- 走到饮水机前面;
- 拿出纸杯;
- 按下开水键,接水;
- 把水拿回来,给谁(谁调用的方法,返回值就给谁);
- returen water;
- }
- 调用方法,让同学帮我买一瓶矿泉水
- 返回值
- 参数----不确定的值
- kqwater callStudentBuyWater(int money){
- //矿泉水价格不一定,5,2,1.5
- 走到便利店;
- 拿一瓶水;
- 付款;
- 把水拿回来,给调用的对象
- return kqwater;
- }
2.get方法和set****方法****
Eclipse自动添加属性的get和set方法。
右键/Source/generate Getters and Setters
3. 方法的重********载
相同的操作,用同一个方法名字表示。
由于方法名相同,JVM,区分到底要执行那个操作,执行不同的操作
根据参数不同来区分,参数个数或者类型不同
//无参数的setAge方法
void setAge(){
//默认加入社团的年龄
age=18;
}
//带参数的setAge方法
void setAge(int a){
if(a>=18){
age=a;//age值到底是多少,变化
}else{
System.out.println("年龄必须大于18");;
}
}