同一个引用类型,因为实例不同,表现的形式不同
在某些情况下,引用类型是一个抽象的概念,那么这样的类型,我们可以把他定义为抽象类
在抽象类当中,可以有普通方法,也可以有抽象方法,但是,抽象方法只能在抽象类当中声明;
抽象类除了多了抽象方法和不能被实例化之外,和普通类一致;
抽象方法的语法,在修饰符和返回值之间,添加关键字abstract,抽象方法没有方法体,即不需要立即实现 ;
没有抽象的属性;
抽象类,不可被实例化;
抽象方法必须在子类当中被实现,除非子类也是抽象类,也就是说,在抽象的类的子类当中,只要有一个子类实现了抽象方法,其后代不必一定实现该抽象方法;
对于一个子类来说,其父类当中所有的抽象方法,如果没有被实现过,那么将都需要去实现这些抽象方法;
向上转型,父类声明,只能调用子类重写的方法,或者本身实现没有被子类重写的方法;
多个子类实现同一个重写的方法,优先调用距离实现类最近的那个;
向上转型,子类特有的方法,无法被调用 ;
向上转型属于自动类型转换。
首先要向上转型过了,才能向下转型;
向下转型之前,一定要判断实例的类型,要强转为那个引用,就判断是否是这个引用;
向下转型属于强制类型转换。
//定义接口
public interface Locl{
private void up1(); //上锁,私有的会报错
protected void up(); //上锁,保护的会报错
public void down(); //落锁,共有的
}
public class FangDaoMen extends Door implements Lock,MaoYan{
}
工厂模式:帮助生产具体接口或者抽象类的实现类
类图:
接口在类名之上有<接口>
抽象类斜体
普通类是正楷
前面+号,共有
前面-号,私有
属性名:属性类型
斜体是抽象方法
正楷是普通方法
参数,方法名(in/out 参数名:参数类型):返回值
前面+号,共有
前面-号,私有
实线
虚线