类--类的成员方法(函数)--如何理解
如何理解方法这个概念,给大家举个通俗的示例:
程序员调用方法:给方法必要的输入,方法返回结果。
类的成员方法--声明
public int test(int a);/*方法声明*/
这句话的作用是声明该方法,声明的格式为:
访问修饰符 数据类型 函数名(参数列表);
在给Person类添加add方法的例题中,我们看到的关键字return,它的功能是把表达式的值返回的值返回给主调函数的方法。
return 表达式;
类的成员方法(函数)--特别说明
1、方法的参数列表可以是多个
案例:在Person类中编写一个成员方法,从键盘输入三个数,返回最大的那个数。
参数列表可以是多个,并且数据类型可以是任意的类型int float double char..
访问修饰符 返回数据类型 函数名(参数列表){
语句; //函数主体
}
2、方法可以没有返回值
案例:编写一个函数,从控制台输入一个整数打印出对应的金字塔。
返回类型可以是任意的数据类型(int,float,double,char..)也可以没有返回值void表示没有返回值
访问修饰符 返回数据类型 函数名(形参列表){
语句; //函数主体
}
类的成员方法(函数)--小练习
案例:编写一个成员函数,从键盘输入一个整数(1-9),打印出对应的乘法表[Demo110.java]
//实例键盘输入打印乘法表[Demo110.java]
import java.io.*;
public class Demo110{
public static void main(String []args){
Cfb jiu=new Cfb();
jiu.cf();
}
}
class Cfb{
public void cf(){
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输入1-9,按0退出:");
//从控制台读取一行数据
String a1=br.readLine();
//把String转为int
int num1=Integer.decode(a1);
for(int i=1;i<=num1;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"×"+j+"="+(i*j)+"\t");
}
System.out.println();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
案例:编写函数,使给定的一个二维数组(3×3)转置
类定义的完善
在介绍了成员方法后,我们类的定义就可以完善一步:
class 类名{ class 类名{ 待定
成员变量; → 成员变量; →
} 成员方法;
}
小结:1.先设计类;2.然后根据类创建对象。
小练习:
1、设计计算机类,要求如下:[Demo109.java]
属性:品牌(Brand)、颜色(Color)、cpu型号(CPU)、内存容量(Memory)、硬盘大小(Harddisk)、价格(Price)、工作状态(Work)
方法:打开(Open)、关闭(Close)、休眠(Sleep)
创建一个计算机对象,调用打开,关闭方法
/
/计算机类与对象的代码
import java.io.*;//加载IO流包
public class Demo109{
public static void main(String []args){
Computer Pc=new Computer();
Pc.Brand="品牌";
Pc.Color="颜色";
Pc.Cpu="Cpu型号";
Pc.Memory="内存容量";
Pc.Hd="硬盘容量";
Pc.Price="价格";
Pc.Work="工作状态";
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输入0-9控制机器");
//从控制台读取一行数据
String a1=br.readLine();
//把String转为float
float num1=Float.parseFloat(a1);
if(num1==0){Pc.open();}
else if(num1==1){Pc.close();}
else if(num1==2){Pc.sleep();}
else if(num1==3){System.out.println(Pc.Brand);}
else if(num1==4){System.out.println(Pc.Color);}
else if(num1==5){System.out.println(Pc.Cpu);}
else if(num1==6){System.out.println(Pc.Memory);}
else if(num1==7){System.out.println(Pc.Hd);}
else if(num1==8){System.out.println(Pc.Price);}
else if(num1==9){System.out.println(Pc.Work);}
else {System.out.println("输入错误!");}
}catch(Exception e){
e.printStackTrace();
}
}
}
class Computer{
String Brand;
String Color;
String Cpu;
String Memory;
String Hd;
String Price;
String Work;
public void open(){
System.out.println("开机");
}
public void close(){
System.out.println("关机");
}
public void sleep(){
System.out.println("休眠");
}
}
-------------------------------------------------------------------------------
2、java面向对象编程(1)-构造方法(函数)
类的构造方法介绍
什么是构造方法呢?在回答这个问题之前,我们来看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做?
↓
你可以在定义类的时候,定义一个构造方法即可。
构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。它有几个特点:
1、方法名和类名相同
2、没有返回值
3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。
特别说明:
一个类可以定义多个不同的构造方法。
//例人类构造方法[Demo111.java]
public class Demo111{
public static void main(String []args){
Person p1=new Person(12,"顺平");//给予不同的初始值,调用的构造方法不同,构造方法虽同名,但系统会根据初始值来选定构造方法。
}
}
//定义一个人类
class Person{
int age;
String name;
//默认构造方法
public Person(){
}
//构造方法的主要用处是:初始化你的成员属性(变量)
//构造方法
public Person(int age,String name){
System.out.println("我是构造1");
age=age;
name=name;
}
//构造方法2
public Person(String name){
System.out.println("我是构造2");
name=name;
}
}
类的默认构造方法
有些同志可能会问?亲爱的老师,我们在没有学习构造函数前不是也可以创建对象吗?
是这样的,如果程序员没有定义构造方法,系统会自动生成一个默认构造方法。比如Person类Person (){};
当创建一个Person对象时Person per1=new Person();默认的构造函数就会被自动调用。
类的构造方法小结:
1、构造方法名和类名相同;
2、构造方法没有返回值;
3、主要作用是完成对新对象的初始化;
4、在创建新对象时,系统自动的调用该类的构造方法;
5、一个类可以有多个构造方法;
6、每个类都有一个默认的构造方法。
类定义的改进
在提出构造方法后,我们类的定义就应该更加完善了:
class 类名{ class 类名{ class 类名{
成员变量; 成员变量; 成员变量;
} → 成员方法; → 构造方法; → 待定..
} 成员方法
}