`
lisijie0616
  • 浏览: 3390 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

java基础:类与对象,构造方法的介绍

    博客分类:
  • java
阅读更多

一、对象

1.对象的概念:

         对象并不只是存在于java的,它只是一种概念,在生活中,只要是一个具体的物体或者一件具体的事情就是一个对象。例如:某个人、某一辆车、某台电脑,这都是一个对象。

         这里需要注意的是对象一定要是一个具体的事物,而例如人、车,这种没有具体的指代,就不能算一个对象。

2.对象的描述:

         如何描述一个对象?我们需要从两方面进行描述:特征(属性)和行为(方法)

         例如:对于某一台电脑这个对象:1.特征:形状,大小,重量,品牌,型号,CPU,内存,显卡,硬盘,...;2.行为:上网,玩游戏,学习,播放电影,...

 

二、类

1.类的组成:

         生活中的类:根据对象相似的特征和相似的行为进行归类。例如:桌子、椅子

         程序中的类 :由两个部分组成:1.属性(成员变量)  ;2.方法(成员函数)

2.类的基本格式:

 

public class 类名 {
		访问修饰符 数据类型 属性名;

		访问修饰符 返回值类型 方法名(数据类型 参数名,...){
			//代码
		}
	}       

  3.实例化对象和调用方法的格式:

          实例化对象的格式:        

          实例化对象的关键字:new    

类名  对象名 = new 构造方法(参数值,...);

    参数值可以为空

    

      调用方法的格式:

对象名.方法名(参数值,...);

 

举例1:

        现在设置这样一个情景:学生张三(已有20学分)选修了一门Java课程,学完该课程后,学分要加3分。

        下面我们先来分析一下:   

        1.对象:

                 张三

                 特征:姓名,学分 行为:学习(Java)

                Java课程

                 特征:学分,课程名,课时    行为:无

        2.根据类的格式定义学生和课程类。

        3.实例化对象:

                Student stu = new Student();

                Classes cla = new Classes();

 

//定义Student类
public class Student {

	//声明属性
	private String name;//姓名属性
	private int score;//学分属性
	
	//定义设置课程名属性值的方法
	public void setName(String n){
		name = n;
	}
	//定义获取课程名属性值的方法
	public String getName(){
		return name;
	}

	//定义设置学分属性值的方法
	public void setScore(int s){
		score = s;
	}
	//定义获取学分属性值的方法
	public int getScore(){
		return score;
	}

	//定义学习课程的方法Classes是类名  cla是参数名对象名
	public void study(Classes cla){
		System.out.println(name+"正在学习"+cla.getName()+"课程!");
		//得到课时
		int time = cla.getTime();
		//减少课时
		time--;
		//将减少后的值设置给课程对象
		cla.setTime(time);

		//判断是否已经学完所有课时
		if(cla.getTime() <= 0){
			System.out.println(name+"已经学完"+cla.getName()+"课程。");
			//让学生的学分加上课程的学分。
			score= score+cla.getScore();
		}
		
	}

}

 

//定义课程类
public class Classes {

	private String name;//课程名属性
	private int score;//学分属性
	private int time;//课时属性

	//定义设置课程名属性值的方法
	public void setName(String n){
		name = n;
	}
	//定义获取课程名属性值的方法
	public String getName(){
		return name;
	}

	//定义设置学分属性值的方法
	public void setScore(int s){
		score = s;
	}
	//定义获取学分属性值的方法
	public int getScore(){
		return score;
	}

	//定义设置课时属性值的方法
	public void setTime(int t){
		time = t;
	}
	//定义获取课时属性值的方法
	public int getTime(){
		return time;
	}

}

 

//定义管理学生学习课程的类
public class Manager {

	//定义程序的入口主函数
	public static void main(String [] args){

		//实例化Student类的对象
		Student stu = new Student();
		//设置对象的姓名属性值
		stu.setName("张三");
		//设置对象的学分属性值
		stu.setScore(20);

		//实例化Classes类的对象
		Classes cla = new Classes();
		cla.setName("Java");//设置课程名
		cla.setScore(3);//设置学分
		cla.setTime(10);//设置课时

		for(int i=0;i<10;i++){
			//调用学生学习课程的方法
			stu.study(cla);
		}

		System.out.println(stu.getName()+"现在的学分是"+stu.getScore());

	}

}

 

以上程序的执行结果为

张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三正在学习java课程!
张三已经学完java课程。
张三现在的学分是23

 

举例2:

       奥特曼和小怪兽进行PK,直到一方的血量为0 时,结束战斗输出谁胜利了。

 

//定义People类
public class People {

       //声明属性
       private String name;//姓名属性
       private int blood;//血量属性

       //定义设置People名属性值的方法
	public void setName(String n){
		name = n;

        }
	//定义获取People名属性值的方法
	public String getName(){
		return name;
	}
        //定义设置血量属性值的方法
	public void setBlood(int b){
		blood = b;
	}
	//定义获取血量属性值的方法
	public int getBlood(){
		return blood;
	}

        //定义打小怪兽的方法

        public void hit(Monster mon){
              System.out.println(name+"对"+mon.getName()+"进行攻击!");
              int blood = mon.getBlood();//得到血量
              blood-=2;//减少血量
              mon.setBlood(blood);//将减少后的血量值设置给怪兽对象
              
             if(mon.getBlood()<=0){
                      System.out.println(name+"胜利了!");
             }
         }

}

 

//定义monster类
public class Monster{

       private String name;// Monster名属性
       private int blood;//血量属性

       //定义设置Monster名属性值的方法
	public void setName(String n){
		name = n;

        }
	//定义获取Monster名属性值的方法
	public String getName(){
		return name;
	}
        //定义设置血量属性值的方法
	public void setBlood(int b){
		blood = b;
	}
	//定义获取血量属性值的方法
	public int getBlood(){
		return blood;
	}
        

        //定义打奥特曼的方法
         public void hit(People peo){
         System.out.println(name+"对"+peo.getName()+"进行攻击!");
         int blood = peo.getBlood();
         blood--;//减少血量
         peo.setBlood(blood);//将减少后的血量值设置给People对象

          if(peo.getBlood()<=0){
                      System.out.println(name+"胜利了!");
             }
          }
}

 

//定义管理类
public class Manager{

       //定义程序的入口函数

        public static void main(String [] args){

            People peo = new People();//实例化People类的对象
            peo.setName("奥特曼");//设置对象的姓名属性值
            peo.setBlood(10);//设置对象的血量属性值
           
            Monster mon = new Monster();//实例化Monster类的对象
            mon.setName("小怪兽");//设置对象的姓名属性值
            mon.setBlood(10);//设置对象的血量属性值

            while (mon.getBlood()>0 && peo.getBlood()>0)

               {
                         mon.hit(peo);
			 peo.hit(mon);

             }
             System.out.println(mon.getName()+"现在的血量是"+mon.getBlood());
             System.out.println(peo.getName()+"现在的血量是"+peo.getBlood());
         }

}

  

    以上程序的执行结果为:

小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
奥特曼胜利了!
小怪兽现在的血量是0
奥特曼现在的血量是5

 

三、构造方法

        以上程序我们都是用的普通方法,但有时候我们需要用到构造方法

       △.构造方法也称为构造函数或构造器。

      1.基本格式: 

访问修饰符  构造方法名(数据类型 参数名,...){
			//代码
		}

 

       而上面的普通方法的格式为:

访问修饰符 返回值类型 方法名(数据类型 参数名,...){
			//代码
		}
	}       

 

我们可以看出,在格式上,构造方法与普通方法的区别在于其少了返回值类型。

△.注意:构造方法名必须要和类名完全一致。这也是其与普通方法不同的地方。

 

 

       2.用途:

       Java如果要创建一个对象,就必须要使用构造方法,否则对象无法创建。那么为什么前面我们没用到构造方法,也创建了对象呢?这是因为如果你没有自定义构造方法,Java就会给每一个类提供一个默认不带参数的构造方法;而一旦你自己定义了构造方法,则默认的构造方法会被覆盖,无法再继续使用。

       构造方法还有一个用途就是传参数,如果之前声明了参数,那么在实例化对象的时候,可以将参数传过来,即:

类名 对象名 = new 构造方法(参数);

    这在之后的例子中会演示到。

 

       3.方法重载:

       概念:方法重载是指在一个类中定义多个同名的方法。

       条件:a.方法名必须要完全一致;b.方法所带的参数个数,参数类型,参数顺序必须要有一个不同。(这是因为主程序在调用方法时,是根据参数的区别来调用的)

       使用时机:当一个对象会产生不同参数的方法时使用,

                        例如:学生的学习方法不止一个,可以自己看书,可以上课等等。即:

public void study(Book bk){
               //代码
}

public void study(Course cos){
               //代码
}
 

 

举例:

           奥特曼和小怪兽以及Boss进行PK,直到一方的血量为0时,结束战斗谁出谁胜利了。

 

//定义People类
public class People {

	private String name;
	private int blood;
	
	public People (String name,int blood){
		
		this.name=name;
		this.blood=blood;
	}
	//定义设置People名属性值的方法
		public void setName(String n){
			name=n;

	        }
		//定义获取People名属性值的方法
		public String getName(){
			return name;
		}
	        //定义设置血量属性值的方法
		public void setBlood(int b){
			blood = b;
		}
		//定义获取血量属性值的方法
		public int getBlood(){
			return blood;
		}
	
//定义打小怪兽的方法
   public void hit(Monster mon){
	   System.out.println(name+"对"+mon.getName()+"进行攻击!");
       int blood = mon.getBlood();//得到血量
       blood-=2;//减少血量
       mon.setBlood(blood);//将减少后的血量值设置给怪兽对象
      if(mon.getBlood()<=0){
               System.out.println(name+"胜利了!"); 
   }
   
      }
   
//定义打boss的方法
   public void hit(Boss bs){
	   System.out.println(name+"对"+bs.getName()+"进行攻击!");
       int blood = bs.getBlood();//得到血量
       blood-=1;//减少血量
       bs.setBlood(blood);//将减少后的血量值设置给怪兽对象
      if(bs.getBlood()<=0){
               System.out.println(name+"胜利了!"); 
   }
   
      }
} 

 

//定义Monster类
public class Monster {
	private String name;
	private int blood;
	
	public Monster (String name,int blood){
		this.name=name;
		this.blood=blood;
	}
	 //定义设置Monster名属性值的方法
		public void setName(String n){
			name = n;

	        }
		//定义获取Monster名属性值的方法
		public String getName(){
			return name;
		}
	        //定义设置血量属性值的方法
		public void setBlood(int b){
			blood = b;
		}
		//定义获取血量属性值的方法
		public int getBlood(){
			return blood;   
		}
	        //定义打奥特曼的方法
	         public void hit(People peo){
	         System.out.println(name+"对"+peo.getName()+"进行攻击!");
	         int blood = peo.getBlood();
	         blood--;//减少血量
	         peo.setBlood(blood);//将减少后的血量值设置给People对象

	          if(peo.getBlood()<=0){
	                      System.out.println(name+"胜利了!");
	             }
	          
}
} 

 

//定义boss类
public class Boss {
	private String name;
	private int blood;
	
	public Boss (String name,int blood){
		this.name=name;
		this.blood=blood;
	
	}
	//定义设置Boss名属性值的方法
			public void setName(String n){
				name = n;
		        }
			//定义获取Monster名属性值的方法
			public String getName(){
				return name;
			}
		        //定义设置血量属性值的方法
			public void setBlood(int b){
				blood = b;
			}
			//定义获取血量属性值的方法
			public int getBlood(){
				return blood;
			}
	
	  //定义打奥特曼的方法
    public void hit(People peo){
    System.out.println(name+"对"+peo.getName()+"进行攻击!");
    int blood = peo.getBlood();
    blood--;//减少血量
    peo.setBlood(blood);//将减少后的血量值设置给People对象

     if(peo.getBlood()<=0){
                 System.out.println(name+"胜利了!");
        }
     }
}

 

//定义管理类
public class Manager {

	public static void main(String[] args) {
		
		
		// TODO Auto-generated method stub
		People peo=new People("奥特曼",20);
		Monster mon=new Monster("小怪兽",10);
		Boss bs=new Boss("大魔王",30);
		
	
	 while (mon.getBlood()>0 && peo.getBlood()>0)

     {
               mon.hit(peo);
               if ( peo.getBlood()>0)
	           peo.hit(mon);

   }
	 while (bs.getBlood()>0 && peo.getBlood()>0){
     bs.hit(peo);
     if ( peo.getBlood()>0)
     peo.hit(bs);
     
	 }
   System.out.println(mon.getName()+"现在的血量是"+mon.getBlood());
   System.out.println(peo.getName()+"现在的血量是"+peo.getBlood());
   System.out.println(bs.getName()+"现在的血量是"+bs.getBlood());
}

}

 

     运行结果为:

小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
小怪兽对奥特曼进行攻击!
奥特曼对小怪兽进行攻击!
奥特曼胜利了!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
奥特曼对大魔王进行攻击!
大魔王对奥特曼进行攻击!
大魔王胜利了!
小怪兽现在的血量是0
奥特曼现在的血量是0
大魔王现在的血量是16

 

      这个例子中我们在People、Monster和Boss类里面都用了带参数的构造方法(两个参数:名字、血量), 在People类里面,对于hit方法用到了方法的重载(参数类型不同)。

 

      △.给参数赋值的时候,用到了this.name=name和this.blood=blood,因为当参数名和属性名一致时,根据Java的规则,会优先使用最近的参数,这样参数赋给参数就和属性没有关系。所以这里用this.属性名,来表示这个是一个属性。这是this的一个用法,关于this的其他用法这里就不具体介绍了。

 

 

 

 

3
0
分享到:
评论
2 楼 lisijie0616 2014-09-29  
leo5592368 写道
楼主写的很详细,果断看懂了,楼主加油,期待下一节让奥特曼复仇

感谢支持
1 楼 leo5592368 2014-09-29  
楼主写的很详细,果断看懂了,楼主加油,期待下一节让奥特曼复仇

相关推荐

    Java基础知识:类和对象

    Java基础知识:类和对象 Java 编程语言中,类和对象是核心概念。理解类和对象的概念对于掌握 Java 编程至关重要。本文将详细介绍 Java 中类和对象的概念、定义和使用方法,并提供相关示例代码,帮助读者深入了解和...

    面向对象2练习题.doc

    * Java 语言基础:类的定义、构造方法、成员变量、成员方法 2. 银行账户功能模拟: * 属性:账号、储户姓名、地址、存款余额、最小余额 * 方法:存款、取款、查询 知识点: * 面向对象编程基本概念:类、对象、...

    JAVA类与对象及数组习题

    下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: 构造方法是类的特殊方法,用于初始化对象的状态。调用构造方法的方式有很多...

    类和对象、构造方法总结

    总之,类和对象是面向对象编程的基础,它们帮助我们将复杂的问题抽象为独立的实体,而构造方法则是创建和初始化这些实体的关键。理解并熟练运用这些概念,将使你的编程能力得到提升,并能更好地设计和实现复杂的系统...

    Java-面向对象设计-类和对象.docx

    Java面向对象设计类和对象是面向对象程序设计的基础,它将现实世界模型自然延伸到程序设计中。类和对象是面向对象设计的核心概念,类描述对象的属性和行为,对象是类的实例,是一个实实在在的个体。 类是对象的模板...

    java基础+面向对象+构造方法实例化

    java基础+面向对象+构造方法实例化

    java面向对象测试题含答案.docx

    4. 构造方法:构造方法用于对象的初始化,构造方法的名称必须与类名相同,构造方法可以重载,构造方法可以有参数也可以没有参数。 5. 面向对象编程的基本概念:面向对象编程的基本概念包括封装、继承和多态。封装是...

    java 构造方法的资源

    了解和熟练使用构造方法是Java面向对象编程的基础,下面将详细阐述Java构造方法的相关知识点。 一、构造方法的作用 构造方法的主要任务是在创建对象时设置对象的初始状态,为对象成员变量赋值。当一个类被实例化时...

    9.java学习第九章——对象的创建和使用+构造方法+方法重载——作业的形式:创建对象在JVM中的存储状态(内存图).pdf

    - 显式构造方法:可以通过定义一个或多个构造方法来自定义对象的初始化方式。 ```java public class Student { private int id; // 无参构造方法 public Student() { this.id = 0; // 初始化id } // 带...

    java基础与面向对象习题与答案

    - **构造方法**:构造方法是用于初始化新创建对象的特殊方法,通常与类名相同且无返回类型。 - **访问修饰符**:public、private、protected和默认修饰符控制类、方法和变量的可见性,理解它们的区别和使用场景。 ...

    java构造方法

    在创建一个对象时,Java首先初始化类中的静态成员,然后是实例成员,最后才是构造方法。这意味着如果一个类中有多个成员变量,它们的初始化顺序将按照代码中声明的顺序进行。 #### 八、总结 构造方法是Java编程...

    Java 构造方法

    例如,一个简单的`Person`类可能有以下构造方法: ```java public class Person { private String name; private int age; // 默认构造器 public Person() { this.name = "未知"; this.age = 0; } // ...

    java中带有不同构造方法的程序内存分析

    总的来说,Java中带有不同构造方法的程序内存分析涉及构造方法的选择、内存的分配(包括栈和堆)、对象的初始化以及垃圾回收机制的理解。通过深入研究这些概念,开发者可以更好地控制和优化程序的内存使用,提高程序...

    Java:构造函数与对象

    ### Java:构造函数与对象 #### 第一章:构造函数揭秘——创造者的第一次触碰 在Java编程语言中,构造函数扮演着极其重要的角色。它是一种特殊的成员方法,主要用于对象的初始化过程。构造函数没有返回类型,其...

    Java基础入门教程 第3章 类和对象(共40页).ppt

    【Java基础入门教程 第3章 类和对象】 Java是一种面向对象的编程语言,其核心概念是类和对象。本章主要介绍了面向对象编程的基础知识,包括数据类型、变量、数组、运算符和控制语句,并重点讲解了类和对象的概念。 ...

    Java语言程序设计A实验1:类与对象.pdf

    Java语言程序设计A实验1是关于类与对象的实践学习,旨在深入理解面向对象编程的基本概念和技巧。实验主要包括以下几个核心知识点: 1. **面向对象编程基础**:面向对象编程(OOP)是一种编程范式,它以对象为中心,...

    Java程序基础类和对象的关系2022优秀文档.pptx

    Java程序基础类和对象的关系 Java程序基础类和对象的关系是Java程序设计的核心概念之一。类和对象之间存在着紧密的关系,类是对象的抽象,对象是类的具体化和实例化。 类是对象的抽象 在Java程序设计中,类是一个...

    Java面向对象编程练习题.pdf

    Java面向对象编程练习题 本资源摘要信息涵盖了 Java 面向对象...本资源摘要信息展示了 Java 面向对象编程的基础知识,涵盖了类的成员变量、方法、构造方法等概念,为学习 Java 编程语言的基础知识提供了有价值的参考。

    Java--类与对象

    本篇文章详细介绍了Java中的类与对象,包括类的定义规则、对象的创建与使用、类与对象的关系以及构造方法等内容。通过示例代码,帮助读者更好地理解和掌握这些概念。在实际编程中,熟练掌握类与对象的使用是非常重要...

Global site tag (gtag.js) - Google Analytics