一、抽象类与抽象方法
- 宠物 是个抽象的概念
- 类上添加abstract修饰符,这个类就成为一个抽象类了。
- 普通类中不允许有抽象方法存在。
- 有抽象方法的类必然是抽象类
- 抽象类中可以有普通方法。
- 抽象类不可以进行实例化对象操作
- 父类中的抽象方法必须在子类中进行重写,除非子类也是一个抽象类。
二、向上/向下转型与instanceof运算符
向下转型:Dog dog1=(Dog) pet;
向上转型:Pet pet=new Dog();
instanceof运算符用来判断对象是属于哪种父类类型
多态的实现方式:
1、使用父类做为方法的参数实现多态
public void cure(Pet pet) {
pet.toHospital();
}
2、使用父类对象做为方法的返回值实现多态
public Pet getObj(int num){
Pet pet=null;
switch (num){
case 1:
pet=new Dog("小黑", 70, 50, "拉不拉多");
break;
case 2:
pet= new Penguin("花花", 50, 50, "Q妹");
break;
}
return pet;
}
三、抽象类与接口
为什么要把一个普通类定义为一个抽象类呢?
原因:
1、它只是一个抽象感念。生活中不存在具体的实例。
2、不可以进行实例化。
抽象类中的抽象方法必须被子类所重写,除非子类也是抽象类。
门:抽象的概念。
防盗门,门具有的能力呢,(功能)
四、接口与抽象类的区别
相同点:
1、都是一个抽象的概念。
2、都不能实例化。
3、都可以定义抽象方法。
4、里面定义的抽象方法,都必须被子类所重写。
不同点:
1、接口中的方法都是抽象方法,不能有普通方法。而抽象类中可以有普通方法。
2、接口中没有构造方法,抽象类中有构造方法。
五、接口
1、接口是一种功能,能力
2、接口也是一种规定,约束,规则
生活中的接口
项目经理约定:针对用户这个对象,做几个功能,注册,登录,修改个人资料这3个功能。
定义接口的时候需要思考的东西:
1、方法名称
2、方法参数
3、返回值类型
4、思考该接口中的其他功能
接口中的属性都是:全局的,静态的,常量。