一、抽象类

  1. 什么是抽象类
    包含抽象方法的类就是抽象类。用abstract修饰。也可以有普通方法和属性,甚至构造方法。
  2. 什么是抽象方法
    没有实际工作的方法就可以被设计为一个抽象方法,不用写出具体的函数体。也用abstract修饰。
//抽象类
public abstract class Person{
//抽象方法
	abstract public void talk();
	abstract  void eat();
	public double getMoney(){
		return money;
	}
}
  1. 为什么要有抽象类
    相当于多了一重编译器的校验。
  2. 关于抽象类的特点

(1)抽象类不能实例化对象

Person p = new Person();//这是要出错的!!

(2)抽象方法不能是private、final、static
因为,抽象方法要被子类重写

public abstract class Person{
//抽象方法
	abstract private void talk();//要出错!!
}

(3)抽象类必须被继承,并且子类要重写父类方法,否则子类也是抽象类,要用abstract修饰
(4)抽象类里不一定有抽象方法,但是有抽象方法的类一定是抽象类。

二、接口

  1. 什么是接口
    相当于是多个类的公共规范,是一种引用数据类型。用interface定义
public interface Ieated{
	public abstract void method();//public abstract固定搭配,可不写。
	public void method2();
	abstract void method3();
	void method4();
}

接口一般命名以大I开头。

  1. 如何使用接口
    接口不能直接使用,必须要有一个“实现类”来实现接口,实现接口中的抽象方法。
public class 类名 implements 接口名{
	//重写接口里的方法
}
  1. 接口的特点
    (1)接口是引用类型,但是不能直接New接口的对象,即不能被实例化
    (2)接口里的每一个方法都是public abstract的。用其它修饰符会报错;
    (3)接口里的方法是不能在接口中实现的,得是由实现接口的类里实现;
    (4)被重写的方法不能用default修饰;
    (5)接口里的变量都是public static final的;
    (6)接口里不能有静态代码块和构造方法;
    (7)接口虽然不是类,但是编译之后后缀也是.class
  2. 实现多个接口(ctrl+i=快速实现接口的方法)
    类是单继承,但是一个类可以实现多个接口
    注意:一个类实现多个接口时,每个接口中的抽象方法都要实现啊,否则类必须被设置成抽象类;
  3. 接口的继承
    使用extend,相当于把多个接口合并在一起。
  4. 抽象类与接口的区别

核心区别:抽象类中可以包含普通方法和普通字段,这样的普通方法和字段是不需要被重写的,子类直接就用了。接口中是不允许包含普通方法和类的,子类必须重写接口里所有的抽象方法

三、Object类

它是Java里默认提供的一个类,所有的类都默认继承Object类。所以说,所有类的对象都可以使用Object类的引用来接收。

  1. Object类里的方法:
    (1)toString ()
    用来打印对象内容,可以直接重写。
    (2)equals()
    用来比较是否相等。
    基本类型的比较:比较的是值的大小是否相同;
    引用类型的比较:比较的是变量地址是否相同;
    对象的比较:重写equals(),并默认按照地址比较。
    (3)hashcode()
    用来确定对象在内存中存储的位置是否相同。
  2. 接收引用类型的数据类型
    Object类可以接收任意对象,也就是说还可以接收:类、数组、接口。。。