Maison >Java >javaDidacticiel >[tutoriel Java] Objets et classes Java

[tutoriel Java] Objets et classes Java

黄舟
黄舟original
2016-12-26 11:19:101394parcourir

Objets et classes Java

Java comme langage orienté objet. Prend en charge les concepts de base suivants :

Polymorphisme

Héritage

Encapsulation

Abstrait

Class

Objet

Instance

Méthode

Analyse des messages

Dans cette section, nous nous concentrons sur les concepts d'objets et de classes.

Objet : Un objet est une instance d'une classe et a un état et un comportement. Par exemple, un chien est un objet. Son statut comprend : sa couleur, son nom et sa race ; ses comportements incluent : remuer la queue, aboyer, manger, etc.

Classe : Une classe est un modèle qui décrit le comportement et l'état d'une classe d'objets.

Objets en Java


Comprenons maintenant en profondeur ce qu'est un objet. Si vous regardez le monde réel qui vous entoure, vous constaterez qu'il y a de nombreux objets autour de vous, comme des voitures, des chiens, des personnes, etc. Tous ces objets ont leur propre état et comportement.

Prenons l'exemple d'un chien. Son statut comprend : son nom, sa race et sa couleur. Ses comportements incluent : aboyer, remuer la queue et courir.

Comparez les objets réels et les objets logiciels, ils sont très similaires.

Les objets logiciels ont également un état et un comportement. L'état d'un objet logiciel est son attribut et son comportement se reflète à travers les méthodes.

Dans le développement de logiciels, les méthodes opèrent sur les changements dans l'état interne des objets, et les appels mutuels entre les objets sont également effectués via des méthodes.

Classes en Java

Les classes peuvent être considérées comme des modèles pour créer des objets Java.

Comprendre la définition d'une classe en Java à travers la classe simple suivante :

public class Dog{
   String breed;
   int age;
   String color;
   void barking(){
   }
   
   void hungry(){
   }
   
   void sleeping(){
   }
}

Une classe peut contenir les types de variables suivants :

Variables locales : dans les méthodes , Les variables définies dans un constructeur ou un bloc d'instructions sont appelées variables locales. La déclaration et l'initialisation des variables sont toutes dans les méthodes. Une fois la méthode terminée, les variables seront automatiquement détruites.

Variables membres : les variables membres sont des variables définies dans la classe et en dehors du corps de la méthode. Ces variables sont instanciées lors de la création de l'objet. Les variables membres sont accessibles par les méthodes de classe, les constructeurs et les blocs d'instructions spécifiques à la classe.

Variables de classe : les variables de classe sont également déclarées dans la classe, en dehors du corps de la méthode, mais doivent être déclarées comme type statique.

Une classe peut avoir plusieurs méthodes. Dans l'exemple ci-dessus : barking(), faim() et sleep() sont toutes des méthodes de la classe Dog.

Méthode constructeur

Chaque classe a une méthode constructeur. Si aucun constructeur n'est explicitement défini pour une classe, le compilateur Java fournira un constructeur par défaut pour la classe.

Lors de la création d'un objet, au moins un constructeur doit être appelé. Le nom du constructeur doit être le même que celui de la classe. Une classe peut avoir plusieurs constructeurs.

Ce qui suit est un exemple de méthode constructeur :

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // 这个构造器仅有一个参数:name
   }
}

Création d'objets

Les objets sont créés à partir de classes. En Java, utilisez le mot-clé new pour créer un nouvel objet. La création d'un objet nécessite les trois étapes suivantes :

Déclaration : Déclarez un objet, y compris le nom de l'objet et le type de l'objet.

Instanciation : utilisez le mot-clé new pour créer un objet.

Initialisation : lors de l'utilisation de new pour créer un objet, la méthode constructeur sera appelée pour initialiser l'objet.

Ce qui suit est un exemple de création d'un objet :

public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }
   public static void main(String []args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Compilez et exécutez le programme ci-dessus, les résultats suivants seront imprimés :

Passed Name is :tommy

Instance d'accès variables et méthodes

accédez aux variables membres et aux méthodes membres via l'objet créé, comme suit :

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问其中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

Instance

L'exemple suivant montre comment accéder aux variables d'instance et appeler Méthodes membres :

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }

   public void setAge( int age ){
       puppyAge = age;
   }

   public int getAge( ){
       System.out.println("Puppy's age is :" + puppyAge ); 
       return puppyAge;
   }

   public static void main(String []args){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge ); 
   }
}

La compilation et l'exécution du programme ci-dessus produisent les résultats suivants :

Passed Name is :tommy
Puppy's age is :2
Variable Value :2

Règles de déclaration du fichier source

Dans la dernière partie de cette section, nous Vous apprendrez les règles de déclaration des fichiers sources. Portez une attention particulière à ces règles lors de la définition de plusieurs classes dans un fichier source et lorsqu'il existe des instructions d'importation et des instructions de package.

Il ne peut y avoir qu'une seule classe publique dans un fichier source

Un fichier source peut avoir plusieurs classes non publiques

源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。

如果一个类定义在某个包中,那么package语句应该在源文件的首行。

如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。

import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。

Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。

Import语句

在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类

import java.io.*;

一个简单的例子

在该例子中,我们创建两个类:Employee和EmployeeTest。

首先打开文本编辑器,把下面的代码粘贴进去。注意将文件保存为Employee.java。

Employee类有四个成员变量:name、age、designation和salary。该类显式声明了一个构造方法,该方法只有一个参数。

import java.io.*;
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 类的构造器
   public Employee(String name){
      this.name = name;
   }
   // 设置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 设置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 设置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。

下面给出EmployeeTest类,该类实例化2个Employee类的实例,并调用方法设置变量的值。

将下面的代码保存在EmployeeTest.java文件中。

import java.io.*;
public class EmployeeTest{

   public static void main(String args[]){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

编译这两个文件并且运行EmployeeTest类,可以看到如下结果:

C :> javac Employee.java
C :> vi EmployeeTest.java
C :> javac  EmployeeTest.java
C :> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0


 以上就是【java教程】Java对象和类的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn