import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
* java生成对象的几种方式
* 1、new
* 2、反射
* Class.forName
* 类.class
* 对象.getClass()
* 3、clone
* 必须实现Cloneable接口,实现protected Object clone()方法
* 4、序列化
1.概念
序列化:把Java对象转换为字节序列的过程。
反序列化:把字节序列恢复为Java对象的过程。
2.用途
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
* @author Administrator
*/
public class Demo1 {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//一、使用new
Student s = new Student();
s.print();
//二、使用反射
Class c = Class.forName("Student");
Student c1=(Student)c.newInstance();
c1.print();
System.out.println("1、通过类本身获得对象");
Class clazz = Student.class;
Student s11=(Student)clazz.newInstance();
s11.print();
Student student1 = new Student();
clazz = student1.getClass();
Student s12=(Student)clazz.newInstance();
s12.print();
//三、使用clone
/**
* implements Cloneable
* protected Object clone()
*/
Student s1 = (Student) s.clone();
s1.print();
// Exception in thread "main" java.lang.CloneNotSupportedException:
//四、使用Serializable
System.out.println(" 序列化对象 ");
//序列化对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\objectFile.obj"));
Student student = new Student();
out.writeObject(student); //写入student对象
out.close();
System.out.println(" 反序列化对象 ");
//反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\objectFile.obj"));
Student obj3 = (Student) in.readObject();
obj3.print();
in.close();
}
}
-----------------------------------
import java.io.Serializable;
public class Student implements Serializable{
private String id;
private String name;
private int age;
public Student(){
System.out.println(" Student Constructor");
}
public void print() {
System.out.println(" Student print method called!!!!");
}
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
public Student(String id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
System.out.println(" Student(id,name,age) Constructor");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
相关推荐
Java对象是由类实例化的结果,当我们使用`new`关键字创建一个对象时,实际上经历了以下几个步骤: 1. **类加载检查**:虚拟机首先检查`new`指令的参数是否能在常量池中定位到一个类的符号引用。如果该类尚未被加载...
编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为.class。 Java源程序文件以.java为扩展名,而编译后的字节码文件则以.class为扩展名,这是Java语言的基本特征之一。 2. 设x = 1,y...
通过以上解析,我们可以看到面向对象编程不仅是一种技术手段,更是一种思维方式,它鼓励开发者从现实世界的视角出发,构建更为灵活、可扩展和可维护的软件系统。掌握面向对象的基础概念,对于任何想要深入学习和应用...
Java面向对象编程是一种强大的软件开发方法,它基于“对象”的概念,强调数据和操作数据的方法紧密结合。这个资源包“java面向对象案例源码及PPT”显然是为了帮助初级Java学习者深入理解面向对象编程的基本原理和...
Java是一种典型的面向对象编程语言。 #### 面向过程的优缺点 **优点**: - 快速开发:对于小型项目或简单的功能实现,采用面向过程的方式可以快速完成开发工作,因为无需复杂的对象建模。 - 简单易懂:由于逻辑...
以下是几种常见的Java序列化方式的详细解释: 1. **Java原生序列化** Java原生序列化是最基础的序列化方式,适用于Java标准库中的对象。要进行序列化,对象所属的类必须实现`Serializable`接口。这个过程通常涉及...
在"java 面向对象程序设计课件"中,我们可以深入探讨以下几个关键知识点: 1. **面向对象编程基础**:Java是面向对象的语言,其核心概念包括封装、继承和多态。封装允许我们将数据和操作数据的方法捆绑在一起,形成...
内部类是指在一个类的内部定义的类,它可以分为成员内部类、静态内部类和方法内部类等几种类型。 - **成员内部类**: 定义在一个类内部的类,可以访问外部类的成员。 - **静态内部类**: 通过`static`关键字定义的...
根据给定文件的信息,我们可以总结出以下几个面向对象的基础知识点,并结合具体的题目来进行解析: ### 面向对象基础知识概述 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据和处理...
它是实现多态的一种方式,一个类可以实现多个接口,使用`implements`关键字。 8. 内部类:Java允许在类内部定义类,这被称为内部类。内部类可以访问外部类的所有成员,包括私有成员,提供了更高级别的封装。 9. ...
它是实现多继承的另一种方式,定义了一组必须被实现的方法,增强了代码的规范性和可扩展性。 8. **异常处理**:Java提供了异常处理机制,通过try-catch-finally语句块捕获和处理运行时错误,以确保程序的稳定性和...
Java是一种广泛使用的面向对象编程语言,其面向对象特性是其核心设计原则之一。"java面向对象精华代码"可能包含了一些示例代码,用于演示和解释Java面向对象编程的关键概念。面向对象编程(Object-Oriented ...
"JAVA面向对象程序设计练习题参考答案" 以下是根据给定的文件信息生成的相关知识点: 一、单项选择题 1. 编译 Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为 `.class`。 知识点...
总结来说,虽然两种方式都能创建线程,但实现Runnable接口通常更受欢迎,因为它更灵活,且可以避免由于单继承带来的问题。在实际开发中,根据项目需求和代码设计选择合适的方法。同时,理解线程的并发执行机制,正确...
在Java开发中,验证码是一种常见的安全机制,用于防止自动化脚本或者机器人进行恶意操作,比如注册、登录等。本文将详细讲解如何在J2EE环境中生成验证码,并涉及到使用Session来存储和验证验证码。 首先,验证码的...
本文将详细介绍几种Java中常见的异常类型及其产生原因,并提供相应的解决方案。 #### 二、异常类型详解 ##### 1. NullPointerException (空指针异常) **定义:** `NullPointerException`是最常见的运行时异常之一...
- **方法重写**:实现多态的一种方式,通过子类重写父类的方法来实现。 - **接口**:另一种实现多态的方式,一个类可以通过实现多个接口来表现出多种行为。 **示例代码**: ```java interface Speakable { void ...
在Java中,String对象可以通过两种方式创建,一种是通过字面量方式创建,如String s1="Hello";,另一种是通过new关键字创建,如String s3=new String("Hello");。在字面量方式创建时,JVM会检查字符串常量池中是否有...
一个类可以包含以下几种类型的成员: 1. **成员变量**:用于存储对象的状态。例如,一个人类对象可能有姓名、年龄等成员变量。 2. **构造方法**:构造方法用于初始化对象的状态。构造方法的名称必须与类名相同,...
根据提供的文件信息,我们将深入探讨Java面向对象编程的知识点,同时引用孙卫琴老师在她的书籍中可能包含的内容,并结合面向对象编程的核心概念进行解释。 标题《JAVA面向对象编程(孙卫琴)02.pdf》表明这是一本专注...