目录
1、abstract关键字
- 可以修饰类和方法,不可以修饰属性,对应的类和方法就称之为抽象类和抽象方法;
2、抽象方法
- 有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法;抽象方法没有方法体;
3、抽象类
抽象类是父类对子类进行的约束,普通子类必须重写父类抽象类的抽象方法,抽象的子类可以不重写父类的抽象方法;抽象类不能被实例化,抽象类中有构造方法;
- 抽象类的特点
- 有抽象方法的类被称之为抽象类
- 抽象类中可以有抽象方法也可以有普通的方法
- 如果子类没有重写父类中的抽象方法,那么子类一定是一个抽象类
- 可以作为其他类的父类存在(约束子类)
- 利于扩展(设计思想)
4、接口
接口是一个特殊的抽象类;接口中只有抽象方法和静态常量;接口使用interface修饰;
子类下的对象如果想实现某种方法,可以让子类实现(implements)接口中的抽象方法;
接口可以继承另一个接口,使用extends关键字;
public interface 接口名{
//静态属性 --不常用
[public final static] 数据类型 常量名 = 值;
int AGE =18;
//抽象方法
[public static] void 方法名();
void fly();
}
- 练习:接口,飞;类,老鹰;鹰(Eagle)类实现飞(fly)接口
public class Eagle extends Animal implements Fly, Catch{
@Override
public void fly() {
System.out.println("老鹰飞");
}
@Override
public void catchs() {
System.out.println("抓小鸡");
}
}
//定义的接口 表示一种能力
public interface Fly {
public static final int AGE = 10;
void fly();
}
5、接口与抽象类的区别
1、接口是一种实现问题的能力,抽象类是一种概念;
2、抽象类具备类中包含的内容,接口中只有抽象方法和静态常量;
3、Java中一个类只能继承继承一个父类,但是可以实现多个接口,一个接口继承多个接口
类与类----》 继承(extends)
类与接口---》实现(implements)
接口与接口--》继承(extends)
6、JDK8版本接口新特性
1.接口中可以写静态方法
static 返回值类型 方法名() {}
2.默认的方法(default)
default 返回值类型 方法名() {}
3.如果接口中有默认的方法,子类必须重写这个默认的方法。
7、类之间的关系
- 继承 / 实现:子类可以通过继承拥有父类的属性和方法,也可重写实现父类的方法
- 依赖:两个类之间的横向关系(临时),通过在方法中当作参数使用
- 关联:强依赖
- 组合:强聚合,整体和局部的生命周期一样
- 聚合:仅强调整体和局部的关系,代表部分的对象可能会被多个代表整体的对象所共享
聚合和组合的区别:聚合是个体离开了整体,依然可以存在
组合是个体和整体不可以分开,个体不能离开整体单独存在几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;
8、UML类图
- 继承 / 实现:(空心三角箭头,子类指向父类)
- 依赖:(虚线箭头,实用类指向被调用类)
- 关联:(实线箭头,使用类指向被调用类)
- 组合:(实心菱形——箭头,整体指向部分)
- 聚合:(空心菱形——箭头,整体指向部分)