一、抽象类
- 什么是抽象类
包含抽象方法的类就是抽象类。用abstract
修饰。也可以有普通方法和属性,甚至构造方法。 - 什么是抽象方法
没有实际工作的方法就可以被设计为一个抽象方法,不用写出具体的函数体。也用abstract
修饰。
//抽象类
public abstract class Person{
//抽象方法
abstract public void talk();
abstract void eat();
public double getMoney(){
return money;
}
}
- 为什么要有抽象类
相当于多了一重编译器的校验。 - 关于抽象类的特点
(1)抽象类不能实例化对象
Person p = new Person();//这是要出错的!!
(2)抽象方法不能是private、final、static的
因为,抽象方法要被子类重写
public abstract class Person{
//抽象方法
abstract private void talk();//要出错!!
}
(3)抽象类必须被继承,并且子类要重写父类方法,否则子类也是抽象类,要用abstract修饰
(4)抽象类里不一定有抽象方法,但是有抽象方法的类一定是抽象类。
二、接口
- 什么是接口
相当于是多个类的公共规范,是一种引用数据类型。用interface
定义
public interface Ieated{
public abstract void method();//public abstract固定搭配,可不写。
public void method2();
abstract void method3();
void method4();
}
接口一般命名以大I开头。
- 如何使用接口
接口不能直接使用,必须要有一个“实现类”来实现接口,实现接口中的抽象方法。
public class 类名 implements 接口名{
//重写接口里的方法
}
- 接口的特点
(1)接口是引用类型,但是不能直接New接口的对象,即不能被实例化;
(2)接口里的每一个方法都是public abstract的。用其它修饰符会报错;
(3)接口里的方法是不能在接口中实现的,得是由实现接口的类里实现;
(4)被重写的方法不能用default修饰;
(5)接口里的变量都是public static final的;
(6)接口里不能有静态代码块和构造方法;
(7)接口虽然不是类,但是编译之后后缀也是.class - 实现多个接口(ctrl+i=快速实现接口的方法)
类是单继承,但是一个类可以实现多个接口
注意:一个类实现多个接口时,每个接口中的抽象方法都要实现啊,否则类必须被设置成抽象类; - 接口的继承
使用extend
,相当于把多个接口合并在一起。 - 抽象类与接口的区别
核心区别:抽象类中可以包含普通方法和普通字段,这样的普通方法和字段是不需要被重写的,子类直接就用了。接口中是不允许包含普通方法和类的,子类必须重写接口里所有的抽象方法。
三、Object类
它是Java里默认提供的一个类,所有的类都默认继承Object类。所以说,所有类的对象都可以使用Object类的引用来接收。
- Object类里的方法:
(1)toString ()
用来打印对象内容,可以直接重写。
(2)equals()
用来比较是否相等。
基本类型的比较:比较的是值的大小是否相同;
引用类型的比较:比较的是变量地址是否相同;
对象的比较:重写equals(),并默认按照地址比较。
(3)hashcode()
用来确定对象在内存中存储的位置是否相同。 - 接收引用类型的数据类型
Object类可以接收任意对象,也就是说还可以接收:类、数组、接口。。。