美文网首页
【Java】JAVA 对象和类

【Java】JAVA 对象和类

作者: Roc_J | 来源:发表于2016-07-17 14:58 被阅读0次

    Java作为一种面向对象语言。支持以下基本概念:
    多态 继承 封装 抽象 类 对象 实例 方法 重载

    public class Dog{
       String breed;
       int age;
       String color;
       void barking(){
       }
       void hungry(){
       }
       void sleeping(){
       }
    }
    一个类可以包含以下类型变量:
    **局部变量**:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
    **成员变量**:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
    **类变量**:类变量也声明在类中,方法体之外,但必须声明为static类型。
    一个类可以拥有多个方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog类的方法。
    

    构造方法

    每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
    在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

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

    创建对象

    对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
    声明:声明一个对象,包括对象名称和对象类型。
    实例化:使用关键字new来创建一个对象。
    初始化:使用new创建对象时,会调用构造方法初始化对象。

    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" );
       }
    }
    

    访问实例变量和方法

    /* 实例化对象 */
    ObjectReference = new Constructor();
    /* 访问其中的变量*/
    ObjectReference.variableName;
    /*访问类中的方法 */
    ObjectReference.MethodName();
    
    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 ); 
       }
    }
    

    源文件声明规则

    • 一个源文件中只能有一个public类
    • 一个源文件可以有多个非public类
    • 源文件的名称应该和public类的类名保持一致。
    • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
    • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
    • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

    Java包

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

    Import语句

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

    //下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类:
    import java.io.*;
    

    一个例子

    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();
       }
    }
    

    运行

    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 对象和类

          本文链接:https://www.haomeiwen.com/subject/njzujttx.html