Java中序列化有什么意义?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会存在数据乱序的问题)。 详情

1.静态块

只在类加载的时候调用一次,用于加载类的时候一次性引入资源。

static{

}

2.实例块

每次实例化对象的时候,在访问类构造器之前调用。

{

}

重写&重载

一、重写:

发生在继承关系的子类和父类之间,子类重写父类非private,final,static方法,构造方法。

重写父类方法要求:

1.子类方法访问修饰符范围必须大等于父类方法;

2.子类方法返回类型和父类方法相同;

3.方法签名/方法参数相同;

4.方法名相同;

二、重载:

重载发生在一个类中,重载起初是为了一个类中有多个不同参数的构造方法。后面延伸到其他方法…

方法重载要求:

1.

 

接口

接口与类相似点:

  • 一个接口可以有多个方法。
  • 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
  • 接口的字节码文件保存在 .class 结尾的文件中。
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

接口与类的区别:

  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。

接口特性

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

抽象类和接口的区别

  • 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  • 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  • 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  • 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

继承

继承使用关键字:extends

类的继承格式:

class 父类 { }

class 子类 extends 父类 { }

继承的特性:

  • 子类拥有父类非private的属性,方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法(重写)。
  • Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。

——————-

implements 关键字:实现接口,可变相地使java具有多继承的特性,使用范围为类实现接口的情况(可同时实现多个接口)。extends仅具有多重继承的特性,而不是多继承。

super,this 关键字:super(用来实现对父类成员的访问,用来引用当前对象的父类)。this(指向自己的引用)

final 关键字:final声明的类为最终类,不能继承;修饰的方法不能被子类重写。注:实例变量也可以被定义为final ,被定义为final的变量不能被修改。被声明为final 的类,方法自动声明为final ,但是实例变量并不是fianl

构造器:子类不能继承父类的构造器,但是父类构造器带有参数的,必须在子类的构造器重显式地通过super关键字调用父类的构造器并配以适当的参数列表。 * 子类继承父类,如果父类中只含“有参构造器”,那么在子类中必须用super,先构造父类,然后构造子类。* java类构造方式的执行顺是要初始化子类必须先初始其父类。

package bao1;

public class FuLei {
	
	String name; // 姓名
	String sex; // 性别
	int age; // 年龄
	
	// 父类的无参构造器
	FuLei(){}
	
	// 父类的三参构造器
	FuLei(String name, String sex, int age){
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	
	// 父类的两参构造器 (类中参数不同的构造器其实就是方法重载)
	FuLei(String name, String sex){
		this.name = name;
		this.sex = sex;
	}
	
	// 父类的介绍方法
	public void jieShao() {
		System.out.println("他名字叫:" + name + "性别:" + sex + "年龄:" + age + "。");
	}
	
	// main方法必须写在 带 public 访问权限的类中,否则eclipse执行
	public static void main(String[] args) {
		ZiLei ziLei = new ZiLei("费瑟","男",23,"走走");
		ziLei.jieShao();
		ziLei.iLike();	
	}

}

/**
 * 子类继承父类,如果父类中只含“有参构造器”,那么在子类中必须用super,先构造父类,然后构造子类。
 * java类构造方式的执行顺是要初始化子类必须先初始其父类。
 * @author Facer
 *
 */
class ZiLei extends FuLei {
	
	String like; // 爱好

	ZiLei(String name, String sex, int age,String like) {
		super(name, sex, age);
		this.like = like;
	}
	
	// 子类重写父类的 jieShao() 方法
	public void jieShao() {
		System.out.println("她名字叫:" + name + ",性别:" + sex + ",年龄:" + age + "。");
	}
	
	// 子类的爱好方法
	public void iLike() {
		System.out.println(name + "的爱好是:" + like);
	}
}