无参方法
类的无参方法
学习本章用到的单词
document:文档,文件
display:展览
method:方法
vesrion:版本
orient:东方,使适应
parameter:参数
since:自从,既然,因为
类的方法概述
类是有一组具有相同属性和共同行为的实体抽象 而来的。对象执行的操作是通过编写类的方法实现的,显而易见,类的方法是一个功能模块,其作用是做一件事情。
eg:
public class AutoLion{
String color = “黄色”;
//跑方法
public void run(){
Sysout(“正在以0.1米的速度奔跑!”)
}
//叫方法
public void cry(){
Sysout(“大声吼叫!”)
}
//抢球方法
public String robBall{
String ball =“球”;
return ball;
}
}
类的每一个方法都实现了一个功能,创建类的的对象之后,可以直接调用。类的方法定义了类的某种(行为)功能,而且方法的具体实现封装在类中,实现了信息隐藏。
如何定义类的方法
类的方法必须包括以下三个部分
》方法的名称
》方法的返回值类型
》方法的主体
语法:
public 返回值类型 方法名(){
//方法的主体
}
通常编写方法时,分两部完成。
第一步,定义方法名和返回值类型。
第二步,在{ }编写 方法的主体部分
在编写方法时,要注意以下三点。
》方法体放在一对大括号中。方法体就是一段程序代码,完成一定的工作。
》方法名主要在调用这个方法时使用。在java中一般采用骆驼式命名法。
》方法执行后可能返回一个结果,该结果的类型称为返回值类型,使用return返回值。
语法:
return 表达式;
return语句是跳转语句的一种,它主要做两件事情
》跳出方法。意思是“我已经完成了,要离开这个方法”。
》给出结果。如果方法产生一个值,这个值放在return后面,即<表达式部分>,意思是“离开方法,并将<表达式>的值返回给给调用它的程序”。
方法调用
对象名.方法名() ;
Java中类是程序的基本单元。每个对象需要完成特定的应用程序功能。当需要某一对象执行一项特定操作时,通过调用该对象的方法来实现。另外在类中,类的不同成员方法之间也可以进行相互调用。
凡涉及类的方法的调用,均使用如下两种形式。
》同一个类中的方法,直接使用方法名调用该方法
》不同类的方法,首先创建对象,再使用“对象名.方法名()”来调用。
常见错误
》方法的返回值类型为void,方法中不能有return语句。
》方法不能返回多个值
》多个方法不能相互嵌套定义。例如,不能将方法getInfo()定义在方法showInfo()中。
》不能在方法外部直接写程序逻辑代码。
变量的作用域
成员变量和局部变量
在类中定义的变量称为成员变量。
在方法中定义的变量称为局部变量。
使用成员变量和局部变量是需要注意以下几点内容:
》作用域不同。局部变量的作用域仅限于定义它的方法,在该方法外无法访问。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用。如果访问权限允许,还可以在类外部使用成员变量。
》初始值不同。对于成员变量,如果在类定义中没有给他赋初值。Java给给他一个默认值,基本数据类型的值为0,引用类型的值为null,但是Java不会给局部变量赋初始值,因此局部变量必须要定义赋值后再使用。
》再同一个方法,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量。
》局部变量可以和成员变量同名,并且在使用时,局部变量具有更高级的优先级。
面向对象编程
如何使用面向对象编程
面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构,20世纪90年代才流行的一种软件编程思想。oop的一条基本原则就是计算机是由单个能够起到子程序作用的单元或对象组合而成的。采用这种架构编程主要起到重要性,灵活性和扩展性的强大作用。
类的方法可以实现某个特定的功能,其他的类不需要知道它是如何实现。知道实现此功能的类和它的方法名,就可以直接调用,而不用重复编码。
JavaDoc注释
是前sun公司的提供的一种技术,它能够从程序源代码中抽取类,成员,方法等的注释,形成一个和源代码配套的APL帮组文档(简单地说,就是介绍该类,类的方法和成员变量的文档)。因此只要在编写程序时以一套特定的标签作为注释,在程序编写完成后,通过JavaDoc技术就可以同时生成程序的开发文档,折正是它的优势所在。
编写之前,首先看以下JavaDoc注释的语法规则:
》JavaDoc注释以/**开头,以*/结尾。
》每个注释包含一些描述性的文本及若干个JavaDoc标签。
》JavaDoc标签一般以“@”为前缀,常用的JavaDoc标签如下:
常用的JavaDoc标签
标签 | 含义 | 标签 | 含义 |
@author | 作者名 | @version | 版本标识 |
@parameter | 参数及其意义 | @since |
最早使用该方法/类/接口的JDK版本
|
@return | 返回值 | @throws | 异常类及抛出条件 |
在MyEclipse中,输入/**,然后按Enter键,MyEclipse平台会自动显示JavaDoc注释格式,并且字体颜色显示蓝色。另外,当使用JavaDoc标签时,输入@MyEclipse会自动显示所有的JavaDoc标签供用户选择。
如何生成JavaDoc注释
两种方法
1.使用命令行方式生成
2.使用MyEclipse工具生成
本章总结
定义类的方法必须包括以下三个部分。
》方法的名称。
》方法返回值的类型。
》方法的主体。
类的方法调用,使用如下两种形式
》同一个类中的方法,直接使用方法名调用该方法
》不同类的方法,首先创建对象,在使用对象名.方法名来调用
在Java中,有成员变量和局部变量,它们的作用域各不相同。
JavaDoc注释以/**开头 */结尾,并且提供了JavaDoc注释标签,使用JavaDoc技术可以生成开发文档。
JAVA面向对象编程的的三大特点
封装
继承
多态
封装和继承都是为多态而准备的,多态的概念最为重要.
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。
java继承特征:
(1)继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。
(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。
(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。
多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
多态的作用:消除类型之间的耦合关系。
现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。
--------------------------
再简单一点:坐公车时,一个男的靠在你的肩膀,你可能不爽,但是如果一个美女靠在你的肩膀你就很乐意,这就是多态的表现.
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
多态有两种表现形式:重载和覆盖
首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。
标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。
他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!
再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。
我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。
这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)