一:构造方法和对象的创建
package chapter4.constructor;
public class TestConstructor {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1:创建Student类的一个实例(对象)
Student stu1 = new Student();
//2:stu1这个对象去调用test1和test2这两个方法
stu1.test1();
int sum = stu1.test2(6, 8);//在方法调用中,传入的参数6和8叫做实参
System.out.println(sum);
//------------------------
//构造方法:用来创建对象并进行初始化
//构造方法:1:要求和类同名;2:不能有返回值,也不能使用void关键字
//3:对于一个类,系统提供默认的、不带参数的构造方法
//4:可以自定义一个或者多个构造方法,但是当自定义构造方法时,系统就不再提供默认的不带参数的构造方法
//5:构造方法要么不定义,如果定义,最好把不带参数的那个构造方法重新定义一次
//示例
int a;//声明了一个int类型的变量
Student stu2;//声明了一个引用类型的变量
a=5;
//给这个变量进行初始化
stu2 = new Student();
//声明和初始化同时进行
int b=10;
Student stu3 = new Student();
System.out.println("新创建的没有经过初始化的stu3="+stu3);
System.out.println("stu2="+stu2);
System.out.println("stu3="+stu3);
//创建对象后,就可以访问对象的属性,也可以调用对象的方法
int age = stu3.age;//创建对象后,这些对象的属性有个初始值:int 0,double 0.0 引用类型的为null
System.out.println(stu3.stuName);
System.out.println(stu3.stuId);
System.out.println(stu3.age);
System.out.println(stu3.clazz);
stu3.test1();//利用对象调用方法
stu3.stuName="han";
stu3.stuId="001";
stu3.age=17;
stu3.clazz="soft181";
System.out.println("经过初始化后的stu3="+stu3);
System.out.println(stu3.stuName);
System.out.println(stu3.stuId);
System.out.println(stu3.age);
System.out.println(stu3.clazz);
//下面演示带4个参数的构造方法
Student stu4 = new Student("002","zhang",18,"soft181");
System.out.println(stu4.age);
stu4.test1();
System.out.println(stu4);
}
}
和基本数据类型不同,在用类声明对象后,还必须创建对象。即为声明的对象分配所拥有的变量(确定对象所具有的属性),类是创建对象的模板,没有类就没有对象。
一:构造方法:
构造方法是类中的一种特殊方法,当程序用类创建对象时需要使用它的构造方法。 如果类中没有编写构造方法,系统会默认该类只有一个构造方法,该默认的构造方法是无参数的,且方法体中没有语句。例如:Lader例中就有一个默认的构造方法。
Lader(){
}
例如Point中有两个构造方法:
class point{
int x,y;
point(){
x=1;
y=1
}
point(int a,int b){
x=a;
y=b;
}
}
例如:构造方法没有类型,有类型的不是构造方法:
class point{
int x,y;
void point(){ //不是构造方法(该方法的类型是void)
x=1;
y=1
}
point(int a,int b){ //是构造方法
x=a;
y=b;
}
int point(){ //不是构造方法(该方法的类型是int)
return 1;
}
}
构造方法的规定:
①类中的构造方法的名字必须与它所在的类的名字完全相同,而且没有数据类型。
②允许在一个类中编写若干个构造方法,但必须保证它们的参数不同(参数不同是指:参数的个数不同,或者参数个数相同,但参数类型不同)
二:创建对象:
创建一个对象包括对象的声明和为对象分配变量两个步骤:
①对象的声明:
一般格式为:
类的名字 对象名字;
例如:
XiyoujiRenwu zhubajie;
声明对象zhubajie时,zhubajiie的内存中没有任何数据,称这时的zhubajie是一个空对象,没有任何“实体”,不能使用;为对象分配变量才可以使用(即为对象分配实体)
②为声明的对象分配变量:
使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。如果类中没有构造方法,系统会调用默认的构造方法,该默认的构造方法是无参数的,且方法体中没有语句。例如:
class XiyoujiRenwu{
float height,weight;
String head,ear;
void speak(String s){
System.out.println(s);
}
}
public class aa1
publiic static void main(String args[]){
XiyoujiRenwu zhubajie; //声明对象
zhubajie=new XiyoujiRenwu(); //为对象分配变量(使用new和默认的构造方法)
}
new运算符和构造方法进行运算时要做两件事情,例如:系统见到
new XiyoujiRenwu();
时,就会做下列两件事:
❶:为height、weight、head、ear各个变量分配内存,然后执行构造方法语句。如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,那么,对于整型的成员变量 ,默认初值为0;浮点型,默认初值为0.0;布尔型,默认初值为false;引用型,默认初值为null。
❷:new运算符在为变量height、weight、head、ear分配内存后,将计算出一个称作引用的值(该值包含着代表这些成员变量内存位置及相关重要信息)
所谓创建对象,就是指为对象分配变量,并获得一个引用,以确保这些变量由该对象来操作管理
三:使用对象:
抽象的目的是产生类,而类的目的是创建具有属性和行为的对象.对象不仅可以操作自己的变量改变状态,而且能调用类中的方法产生一定的行为.通过使用运算符".",对象可以实现对自己变量的访问和方法的调用.
①对象操作自己的变量(体现对象的属性):对象创建后就有了自己的变量,即对象的实体.对象通过使用点运算符"."来访问自己的变量,格式为:
对象.变量;
②对象调用类中的方法(体现对象的行为):对象创建后,可以用点运算符"."调用创建它的类中的方法,从而产生一定的行为(功能),调用格式为:
对象.方法;
③体现封装:当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量.类中的方法可以操作成员变量.当对象调用该方法时,方法中出现的成员变量就是指分配给该对象的变量.
class XiyoujiRenwu {
float height,weight;
String head, ear;
void speak(String s) {
head="歪着头";
System.out.println(s);
}
}
public class Example4_3 {
public static void main(String args[]) {
XiyoujiRenwu zhubajie,sunwukong; //声明对象
zhubajie = new XiyoujiRenwu(); //为对象分配变量
sunwukong = new XiyoujiRenwu();
zhubajie.height=1.80f; //对象给自己的变量赋值
zhubajie.head="大头";
zhubajie.ear="一双大耳朵";
sunwukong.height=1.62f; //对象给自己的变量赋值
sunwukong.weight=1000f;
sunwukong.head="绣发飘飘";
System.out.println("zhubajie的身高:"+zhubajie.height);
System.out.println("zhubajie的头:"+zhubajie.head);
System.out.println("sunwukong的重量:"+sunwukong.weight);
System.out.println("sunwukong的头:"+sunwukong.head);
zhubajie.speak("俺老猪我想娶媳妇"); //对象调用方法
System.out.println("zhubajie现在的头:"+zhubajie.head);
sunwukong.speak("老孙我重1000斤,我想骗八戒背我"); //对象调用方法
System.out.println("sunwukong现在的头:"+sunwukong.head);
}
}
四:对象的引用和实体:
类是体现封装的一种数据类型,类所声明的变量被称作对象,对象(变量)负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法。分配给对象的变量被习惯的称作为对象的实体。