2020-03-15 |

初始化一个对象

新运算符通过为新对象分配内存并返回对该内存的引用来实例化类。新的操作符也调用类的构造函数。

// Class Declaration

public class Dog
{
    // Instance Variables
    String name;
    String breed;
    int age;
    String color;

    // Constructor Declaration of Class
    public Dog(String name, String breed,
                   int age, String color)
    {
        this.name = name;
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // method 1
    public String getName()
    {
        return name;
    }

    // method 2
    public String getBreed()
    {
        return breed;
    }

    // method 3
    public int getAge()
    {
        return age;
    }

    // method 4
    public String getColor()
    {
        return color;
    }

    @Override
    public String toString()
    {
        return("Hi my name is "+ this.getName()+
               ".\nMy breed,age and color are " +
               this.getBreed()+"," + this.getAge()+
               ","+ this.getColor());
    }

    public static void main(String[] args)
    {
        Dog tuffy = new Dog("tuffy","papillon", 5, "white");
        System.out.println(tuffy.toString());
    }
}

输出:

Hi my name is tuffy.
My breed,age and color are papillon,5,white
  • 这个类包含一个构造函数。我们可以识别构造函数,因为它的声明使用与类相同的名称,并且它没有返回类型。Java编译器根据参数的数量和类型区分构造函数。Dog类中的构造函数有四个参数。以下语句为这些参数提供“tuffy”,“papillon”,5,“white”作为值:
    Dog tuffy = new Dog("tuffy","papillon",5, "white");

    执行此语句的结果可以表示为:
    Java中的类和对象

注意:所有类都至少有一个构造函数。如果一个类没有显式声明任何东西,Java编译器会自动提供一个无参的构造函数,也称为默认构造函数。这个默认构造函数调用父类的无参数构造函数(因为它只包含一个语句,即super();),或者如果该类没有其他父类,则为Object类构造函数(因为Object类是所有类的父类,直接或间接)。

创建类的对象的方法

在java中有四种创建对象的方法,严格来说只有一种方法(使用new关键字),其余的内部使用new关键字。

  • 使用新的关键字:这是在java中创建对象最常用和最常用的方法。例:
    // creating object of class Test
    Test t = new Test();
  • 使用Class.forName(String className)方法:在名为Class的java.lang包中有一个预定义的类。forName(String className)方法返回与具有给定字符串名称的类关联的Class对象。我们必须给出一个类的完全限定名称。在此Class对象上调用新的Instance()方法时,将返回具有给定字符串名称的类的新实例。
    // creating object of public class Test
    // consider class Test present in com.p1 package
    Test obj = (Test)Class.forName("com.p1.Test").newInstance();
  • 使用clone()方法:clone()方法存在于Object类中。它创建并返回对象的副本。
    // creating object of class Test
    Test t1 = new Test();
    
    // creating clone of above object
    Test t2 = (Test)t1.clone();

 

  • 反序列化:反序列化是从文件中保存的状态读取对象的技术。参考java中的序列化/反序列化
             
    FileInputStream file = new FileInputStream(filename);
    ObjectInputStream in = new ObjectInputStream(file);
    Object obj = in.readObject();
    
java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论