面向对象
来源:互联网 发布:8级胖子升级数据 编辑:程序博客网 时间:2024/06/07 09:19
① 概念:计算机中的对象:客观复杂事物在计算机中的表现形式。
② 对象的组成:对象的属性:代表对象有什么特征
对象的方法:代表对象能做什么,具有什么功能。
③ 对象的描述:计算中用类描述对象,描述对象有哪些属性和哪些方法(类是对象共性的抽象)。
2. 类和对象的关系:
① 类是对象的模板
② 对象是类的实例
3. 类的组成
① 属性:称为成员变量
a. 语法:数据类型 属性名;
数据类型 属性名=值;
b. 位置:类以内,方法以外。
c. 成员变量具有默认值:(同数组)
整数: 0
小数: 0.0
布尔: false
字符: 空字符('\u0000')
对象: null
d. 作用范围:至少在本类中有效。
e. 成员变量可以和局部变量名字相同,但是当命名冲突,
局部变量优先被使用。
成员变量和局部变量的区别????
成员变量 局部变量
位置: 定义在类以内,方法以外 定义在方法内部
作用范围:至少在本类有效 定义位置开始,到定义它的代码块结束
默认值: 具有默认值 没有默认值,必须先赋值后使用
命名: 成员变量可以和局部变量命名 在重合的作用范围内,不允许命名冲突。
冲突,局部变量优先
② 方法:称为成员方法
a. 语法:
函数语法:public static 返回值类型 函数名(形参列表){
//函数的实现...
}
方法语法:public 返回值类型 方法名(形参列表){
//方法的实现.....
}
注意:方法的定义不再需要加static,static语法后面课程具体讲解。
b. 位置:类以内,其他方法以外。
c. 方法的定义分为方法的声明和实现。
I.方法的声明:
组成:修饰符 返回值类型 方法名(形参列表)异常
注意:一个方法的修饰符1~n个,而且没有位置的先后
含义:代表对象能做什么
II.方法的实现:
组成:{ //方法的实现 }
含义:代表对象的功能如何实现。
d. 方法的重载(overLoad):
I. 概念:在一个类中,定义多个相同名字的方法,但是参数不同。
II.要求:
① 方法名相同
② 参数列表不同(类型、个数、顺序)
③ 方法的返回值类型、修饰符、异常没有要求。
注意:只是形式参数名字不同,不是方法的重载。
III. 在编译时,根据调用者传递的实际参数,确定调用哪一个方法。
Iv. 注意:① 实际参数和形参匹配时,遵循就近向上匹配
② 使用时,避免匹配混淆。
③ 构造方法:
a. 构造方法是一个特殊的方法。
b. 要求:① 构造方法的名字必须和类名完全一致;
② 构造方法没有返回值类型(连void的都没有)
修饰符 类名(形参列表){
//实现
}
③ 构造方法允许重载
④ 构造方法不允许手工调用
使用:① 构造方法在创建对象时,JVM自动调用1次
② 如果一个类中没有定义任何构造方法,系统自动默认添加一个
公开、无参数的构造方法;但是如果类中定义了有参数的构造
方法,则系统不会再添加公开、无参数的构造方法。
c. 位置:类以内,其他方法以外。
d. 构造方法的作用:
① 用于创建对象
② 通常给属性赋值
4. 创建对象:
① 语法:类名 对象名/引用名=new 构造方法(实际参数);
注意:根据创建对象时,构造方法中实际传递的参数,决定调用哪一个构造方法。
② 使用对象:
使用对象的属性:
给属性赋值:对象名.属性名=值;
获取属性的值:对象名.属性名
使用对象的方法:对象名.方法名(实参);
5. 对象创建的过程:
① 分配空间:给属性赋默认值
② 初始化属性:给属性赋初始数据(给属性赋值的第二次机会)
③ 调用构造方法:给属性第三赋值(给属性赋值的第三次机会)
6. this的应用
① 第一种用法:this.
a. this代表当前对象,类似于"我",用于方法(成员和构造方法)中,
调用本类的属性或是成员方法。
b. this.属性名:调用本类的属性
this.方法名(实参); 调用本类的成员方法
注意: this. 通常可以省略,但是当局部变量和成员变量命名冲突时,
必须使用this. 区分成员变量。
② 第二种用法: this()
a.this() :用在构造方法中,调用本类的其他构造方法。
b. this(); :代表调用本类无参数的构造方法
this(实参):代表调用本类的有参数的构造方法。
注意:a. this()必须是构造方法中的第一行语句。
b. 使用时避免递归调用构造方法。
7. 引用
① 引用存储对象在堆空间中的地址。
② 可以先引用,再赋值:
Worker w;
w=new Worker();
③ 以 null调用对象的属性或是方法,运行报错,错误信息:
java.lang.NullPointerException(空指针异常)
④ 引用之间传递的是对象的地址。
基本数据类型之间传递是数值。
⑤ 引用可以用在形式参数、返回值、数组。
ej:
package demo20171027;
/**
* 面向对象,this关键字在调用构造方法时:避免递归调用构造方法。所谓的递归调用就是:例如:有两个构造方法;一个构造方法在另一个中,另一个也在那个中。
* @author Mr fage
*
*/
public class MianXiangDuiXiang2 {
public static void main(String[] args) {
MoBan m=new MoBan("zhangsan",9999999);
System.out.println(m.name+m.age);
m.juBu("66666",999);
MoBan m1=new MoBan();
}
}
class MoBan{
String name;
int age;
public MoBan(){ //无参构造方法
this("hehe",20);
System.out.println("验证this调用本类中的成员变量和成员方法666666666666666666666");
}
public MoBan(String name,int age){
//this(); //在这里this调用了MoBan()构造方法
this.name=name; //调用本类的成员方法
this.age=age;
this.juBu(name, age);
}
public void juBu(){ //无参成员方法
}
public void juBu(String name,int age ){
System.out.println("5555555555555555555");
}
}
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- poj 1486 Sorting Slides(二分图匹配)
- 腾讯公司副总裁钟翔平:在技术端推进H5生态发展
- 阿里借UC“赋能”内容生产者:媒体要有做“天猫”的准备和机会
- Spring Aop(十二)——编程式的创建Aop代理之AspectjProxyFactory
- STM32中断优先级彻底讲解
- 面向对象
- 单旋翼无人机与遥控直升机有区别吗?
- “贴心多合一”的智能皮肤贴片,或许是体征监测的未来
- 带机器人一起上电视 人工智能先行者吴义坚做客东方卫视《新生代》
- Android更改默认menu界面颜色和位置
- 腾讯发布领御守护计划,或将带来行业两大改变
- 音乐猫狂欢夜!DOSS携天猫发布跨界智能新品
- 【学习笔记】ReentrantLock的一些自有方法(查询为主)
- c语言 float 保留小数点后两位数字