1 面向过程编程和面向对象编程
1) 面向过程编程, 实现某个功能时,使用函数之间相互调用完成的。函数之间的关联性很强。
当功能发生改变时,需要重写新编写函数。
2) 面向对象编程,实现某个功能时,把实现的方式拟人化,通过调用各个对象的功能来实现要求。
盖房子:
打地基
砌墙
盖房顶
1 过程
定义方法: 打四方形地基的方法
砌四方形墙的方法
盖四方形的房顶的方法
盖房子的方法(){ //四方法的房子。
打四方形地基的方法
}
2 对象:
打地基的人{
打地基的方法;
砌墙的人{
砌墙的方法
}
盖房顶的人{
盖房顶的方法;
盖房子(打地基的人,砌墙的人,盖房顶的人){
打地基的人.打地基的方法
砌墙的人.砌墙的方法()
盖房顶的人.盖房顶的方法()
2 面向对象编程
核心“对象"
1) 什么 是对象? “万物皆对象"
现实世界里每个实实在在存在的个体==》对象
2) :如何把现实中的对象 ==》抽象==>程序中的对象
对现实的对象==》归类 ==》在程序定义类 ==》 创建程序中的对象
归类:把具有相同特征和相同行为的一组对象归为一类。==》类名
相同特征 (静态属性):属性
相同行为(动态属性): 成员方法
每个对象有自己特有的属性值。 =》属性属于对象所有。
成员方法 : 属于对象所有。
一 类:
具有相同属性和方法的一组对象的统称。抽象的,概念性
类规定了程序中的对象所具有的属性和方法。
二类:
类是自定义的数据类型。 ==》引用数据类型
二者的关系 :
类:是抽象的。有一组相同属性和方法的对象抽象而得。
对象是具体的。 是类的具体化表现
一 面向对象分析 (OOD)
学生类:
属性:学号,姓名,性别,年龄,联系方法,家庭地址,
方法:学习,自我介绍
仅保留与项目相关的属性和方法
1) 找到类
2) 找到属性
3) 找到方法
二 面向对象设计
类图 ---》 UML(统一建模语言)
三 面向对象编程
一 定义类的语法:
访问修饰符 class 类名{
//属性
//方法
1 访问修饰符 public (所有包可见), 默认的(仅当前包可用)。
2 类名 , 首字母大写。见名知义。
3 属性: 属于对象所有 ->成员变量
数据类型 属性名;
数据类型 :基本类型,引用类型(类,数组,接口)
属性名: 第一个单词首字母小写,其他单词首字母大写。见名知义
注意:属性有默认值:
基本类型属性值:
byte,short,int ,long :0
float double : 0.0
char : \U0000
boolean : false
引用类型: null
4 方法: 属于对象所有 ==》成员方法
访问修饰符 返回值类型 方法名(参数列表){
方法体;
1) 访问修饰符 : public ,默认的, private ,protected
2) 返回值类型 :方法执行结束后,返回的数据类型
无返回:void
3) 方法名 : 第一个单词首字母小写,其他单词首字母大写。见名知义
4) 参数列表 :执行方法时需要的数据。
5) 方法体 :完成此方法的代码。
注意: 在成员方法中,可以访问属性
一 创建对象: 实例化对象
类名 对象名 = new 类名();
Student stu = new Student();
注意:对象名又称为引用名,存储是所引用对象的"地址";
二 访问对象的属性 和方法
1 给属性赋值:
对象名.属性名 = 值;
2 取属性的值:
对象名.属性名;
3 访问对象的方法
对象名.方法名(参数);

一 步创建对象
类名 对象名 = new 类名();
二步 通过 .访问对象的属性和方法
1 访问属性
对象名.属性名
2 访问方法
一 java.lang.NullPointerException
:空引用异常
当引用类型的变量没有引用数据时,而是null
调用对象的属性和成员方法,则引发此异常
属性:成员变量 :可以类中所有成员方法中访问
局部变量 :在方法中定义的变量,形参,在条件结构或循环结构中定义的变量 { }
1 默认值, 属性有默认值 ,局部变量没有默认值 ,局部变量在使用前必须赋值
2 作用域不同,属性在类中任何成员方法中使用,局部变量仅可以定义的方法中使用。
3 优先级 ,当方法中有与属性同名的局部变量时,局部变量的优先高于属性。==》就近原则
在方法中区分属性与局部变量,在属性的前面加this.属性名;
构造方法:
1 构造方法的语法:
访问修饰符 构造方法名(参数列表){
注意事项:
1 构造方法名称必须与类名同名
2 构造方法没有返回值类型。也不能写void.如果写了void则不再是构造方法
2 构造方法的作用
构造对象并初始化属性值
3 何时使用构造方法:
创建对象时使用构造方法,与new关键词一起使用。
4 构造方法的分类:
隐式构造方法:如果类中没有定义任何构造方法,则系统给类提供一个public的无参构造方法;
显示构造方法:在定义类时,编写构造方法;此时系统不再提供构造方法
无参构造方法
有参构造方法
注意: 如果在类中定义构造方法,则系统不再提供无参构造方法;
因此在类中定义有参构造方法时,建议同时定义一个无参构造方法。
一 方法的重载 (overload)
1 在同一个类中
2 方法名相同,但参数不同的方法 == 》 方法重载
3 参数不同(个数,类型不同,顺序不同)
4 与形参的名称无关
5 与返回值类型无关
6 与访问修饰符无关
二 :好处
1 方便调用,增强代码的可读性
2 实现方法调用的多态:
一个方法名,根据参数的不同的执行不同的操作
三 哪些方法可以重载:
1 构造方法
2 成员方法
3 静态方法
this是什么?
this是一个引用,存储是当前正在运行的对象的"地址"
this在当前对象内部引用当前对象
每个对象内部都有一个this
2 this可以用在哪些地方? 在类中使用
在类的成员方法中使用
在类的构造方法中使用
3 如何使用this?
1) 在成员方法中使用,可以访问属性和成员方法
this.属性名 :
this.成员方法名(参数);
2) 在构造方法使用,可以访问属性和成员方法,
this.属性名
this.成员方法名()
3)在构造方法中,访问同类其他的构造方法
this(参数); ==》访问同类的其他构造方法 ,此行代码写在构造方法的第一行
this(); -->调用同类中无参的构造方法
好处 : 代码的复用
类 封装了对象的属性和方法
方法 封装方法的实现细节
一. 封装属性:
1 属性私有化
2 给属性提供公共的方法 :赋值方法(setter方法)与取值方法(getter)方法
赋值方法 : 无返回值,但带有参数(类型与属性的类型一致)方法
方法名: set属性名(参数){} ,把属性名的首字母改为大写
public void setSex(String sex){}
取值方法 : 有返回值(与属性类型一致) 无参的方法
方法名: get属性名(){} ,把属性名的首字母改为大写
public String getSex(){ return sex}
注意 :如果属性的类型为boolean则get方法改为:is属性名(); 把属性名的首字母改为大写
3 在set方法中添加控制语句
二. 使用封装的好处:
1 保证数据的安全性
2 代码可重用性
3 方便修改
一 访问修饰符:
public :公共 的
protected : 受保护的
默认的: (不写任何修饰符)
private :私有的
二 修饰类:(不指内部类)
public ,默认的
三 修饰变量(不包括局部变量),修饰方法
public ,protected,默认的,private
一 继承 extends
继承的优点 : 实现代码的复用及功能的扩展
类图:
二 、 java.lang.Object :是所有类的超类
定义类没有继承自任何一个父类,则默认继承Object
三 在java中继承的特点
一个子类仅可以有一个直接父类 ==》 “单一继承"
可以”多重继承"
四、子类可以继承父类的哪些内容
1 可以继承父类成员属性和成员方法(注意访问权限)
2 不继承父类的构造方法
3 子类除了继承父类的内容,还可以有自己特有的属性和方法
五 创建子类对象会调用父类的构造方法吗? 如果会调用,先调用父还先调用子类?
会调用父类的构造方法。先调用父类的构造方法再调用子类的构造方法。
六 如何在子类的构造方法中调用父类的构造方法的?
在子类的构造方法中,第一行调用父类的构造方法:
super(参数);
如果调用父类的无参构造方法:
super(); //可以省略不写
注意:
1 如果子类中没有显示的调用父类的构造方法,则默认调用父类的无参构造方法
2 如果在子类调用父类的带参构造方法,则必须在子类的构造方法第一行:super(参数)
3 如果父类中仅有带参构造方法,则子类的所有构造方法中必须显示的调用父类的有参构造方法;
七、 在java的程序中任何类之间都可以继承吗?
1) 从语法上说,可以。
2) 从语义不可以。 有“is-a"的关系 : 子类 是一个父类
父类如何得到的?
类 : 由现实的具有相同属性和相同方法的一组对象 抽象而得。
父类 : 由具有相同属性和相同方法的一组类抽象面得的。
编程: 父类 ==》 子类 ==》对象