马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 零度非安全 于 2017-2-24 13:29 编辑
点击图片穿越到 索引帖,听说有惊喜!
☟
在上一讲还有 3 个方法没讲到,那么这讲就这 3 个方法说明解决
分别是 构造方法、类方法以及实例方法
☠
构造方法
构造方法是一种特殊的方法
它的名字必须与它所在的类的名字完全相同
而且没有类型,构造方法也可以重载。
|
|
例如:
- class 梯形{
- float 上底,下底,高;
- 梯形(){ //构造方法
- 上底 = 60;
- 下底 = 100;
- 高 = 20;
- }
- 梯形(float x,float y,float h){ //构造方法
- 上底 = x;
- 下底 = y;
- 高 = h;
- }
- }
复制代码
当用类创建对象时,使用构造方法,下一讲非安全会讲到,不急哈!
|
|
类方法和实例方法
成员变量可分为实例变量和类变量,同样,类中的方法也可分为实例方法和类方法。
在声明方法时,方法类型前面不加关键字 static 修饰的实例方法,加 static 修饰的是类方法(静态方法)
例如:
- class A{
- int a;
- float max(float x,float y){ //实例方法
- .
- .
- .
- }
- static float jerry(){ //类方法
- .
- .
- .
- }
- static void speak(String s){ //类方法
- .
- .
- .
- }
- }
复制代码
A 类中的 jerry 方法和 speak 方法是类方法,max 方法是实例方法。需要注意的是,static 需放在方法的类型的前
面。在学习过对象之后,鱼油即可知道实例方法和类方法区别。
|
|
几个值得注意的问题
对成员变量的操作只能放在方法中
方法可以对成员变量和该方法中声明的局部变量进行操作
在声明类的成员变量时可以同时赋予初值。
例如:
- class A{
- int a = 12;
- float b = 12.56f;
- }
复制代码
但是不可以这样做:
- class A{
- int a;
- float b;
- a = 12; //非法,这是赋值语句(语句只能出现在方法体中),不是变量的声明
- b = 12.56f; //非法
- }
复制代码
这是因为类体的内容由成员变量的声明和方法的定义两部分组成,下面这个才是正确的。
- class A{
- int a;
- float b;
- void f(){
- int x,y;
- x = 34;
- y = -23;
- a = 12;
- b = 12.56f;
- }
- }
复制代码
实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。例如:
- class A{
- int a;
- static b;
- void f(int x,int y){
- a = x; //合法
- b = y; //合法
- }
- static void g(int x){
- b = 23; //合法
- a = z; //非法
- }
- }
复制代码
一个类中的方法可以互相调用,实例方法可以调用该类中的其他方法;类中的类方法只能调用该类的类方法,不能调用实例
方法。例如:
- class A{
- float a,b;
- void sum(float x,float y){ //这是一个实例方法
- a = max(x,y); //合法(调用类方法)
- b = min(x,y); //合法(调用实例方法)
- System.out.print(a + b);
- }
- static float getMaxSquare(float x,float y){ //这是一个类方法
- return max(x,y) * max(x,y); //合法(调用类方法)
- }
- static float getMinSquare(float x,float y){ //这是一个类方法
- return min(x,y) * min(x,y); //非法(调用实例方法)
- }
- static float max(float x,float y){ //这是一个类方法
- return a > b ? a : b;
- }
- float min(float x,float y){ //这是一个实例方法
- return a < b ? a : b;
- }
- }
复制代码
【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。
❁
❁
|