抽象类
1、什么是抽象类?
抽象类:拥有抽象方法的类必须定义成抽象类,必须用abstract修饰。
抽象方法:没有方法体,只有方法签名,必须用abstract修饰的方法就是抽象方法。
abstract class Animal{
// 抽象方法:没有方法体,只有方法签名,必须加上abstract修饰。
public abstract void run();
}
2、抽象类的使用
抽象类是为了被继承。抽象类不能够创建对象。
一个类继承了抽象类,必须重写完抽象类的全部抽象方法,否则这个类必须定义成抽象类。
因为拥有抽象方法的类必须定义成抽象类。
3、抽象类的意义
抽象类存在的意义有两点:
(1)被继承,抽象类就是为了被子类继承,否则抽象类将毫无意义。(核心意义)
(2)抽象类体现的是"模板思想":部分实现,部分抽象。
抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
接口
1、什么是接口?
接口是更加彻底的抽象,接口中全部是抽象方法和常量,没有其他成分。
接口的格式:
修饰符 interface 接口名称{
}
interface:定义接口的关键字。
2、接口的作用
接口体现的是规范思想,实现接口的类必须重写完接口中全部的抽象方法。
接口称为被实现,实现接口的类称为实现类。
3、接口中成分
1.抽象方法
a.接口中的抽象方法默认会加上public abstract修饰,所以可以省略不写。
2.常量
常量:是指有public static final修饰的成员变量,有且仅能被赋值一次,值不能改变。
常量的名称规范上要求全部大写,多个单词下划线连接。
常量修饰的public static final 可以省略不写,默认会加上。
4、接口的基本实现
类与类是继承关系:一个类只能直接继承一个父类。
类与接口是实现关系:一个类可以实现多个接口。
实现类实现接口的格式:
修饰符 class 实现类名称 implements 接口1,接口2,接口3,....{
}
implements:实现的含义。
注意:一个类实现接口必须重写完接口中全部抽象方法,否则这个类必须定义成抽象类!!
类与接口是多实现关系:一个类可以实现多个接口。
接口与接口是多继承关系:一个接口可以继承多个接口。
5、多个接口实现
1.如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突,
原因是只能通过各自接口名访问静态方法。
2.当一个类,既继承一个父类,又实现若干个接口时,(重点)
父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。
3.当一个类实现多个接口时,多个接口中存在同名的默认方法。
实现类必须重写这个方法。
4.接口中,没有构造器,不能创建对象。(重点)
接口是更彻底的抽象,连构造器都没有,自然不能创建对象!!