2020-06-27

final关键字

1.它修饰的类无法继承
2.它修饰的类无法覆盖
3.它修饰的变量只能赋一次值
4.他修饰的引用一旦指向某个对象,则不能再重新指向其他对象,但该引用指向的对象内部的数据是可以修改的。
5.他修饰的实例变量必须手动初始化,不能采用系统默认赋值
6.它修饰的实例变量一般个static联合使用,称为常量。

抽象类

类到对象是实例化。对象到类是抽象。

1.mean?

类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身不存在,所以抽象类无法创建对象。(无法实例化)

2.它属于引用数据类型

3.how to define?

[修饰符列表] abstract class 类名{类体; }

4.抽象类是无法实例化,无法创建对象,所以它是用来被子类继承的。
5.final和abstract不能联合使用,是对立的
6.抽象类的子类可以是抽象类,也可是非抽象类
7.抽象类虽然无实例方法,但是抽象类有构造方法,这个构造方法供子类使用
8.抽象方法表示没有实现的方法,没有方法体的方法。如何定义呢? :
public abstract void move ();
9.一个非抽象的类,继承抽象类,必须将抽象类中的抽象方法进行覆盖/重写/实现。

注:
问。JAVA语言中凡是没有方法体的方法都是抽象方法?
答。错的。Object类中就有很多方法都没有方法体,都是以 ; 结尾的,但他们不是抽象方法。比如
: public native int hashCode();
这个方法底层调用了c++写的动态链接库程序。
前面修饰符列表中没有abstract,有native,表示调用jvm本地程序。

接口

1.是引用数据类型
2.是完全抽象的
3.定义: [修饰符列表]interface 接口名{ }
4.支持多继承
5.接口中只用常量+抽象方法
6.中的所有元素都是public修饰的
7.中的抽象方法的public abstract 可以省略
8.中常量的 public static final 可以省略
9.中方法不能有方法体
10.一个非抽象的类,实现接口时,必须将接口中所有的方法加一实现。
11.一个类可以实现多个接口
12.extends和implements可以共存,前者在前,后者在后
13.接口在开发中的作用?
注意:接口在开发中的作用,类似于多态在开发中的作用。
多态:面向抽象编程,不要面向具体编程。降低程序的耦合度。提高程序的扩展力。
/*
public void feed(Dog d){ }
public void feed (Cat c){ }
如果还要再养一个宠物的话,就要再加一个方法,扩展力差
/
/

public void feed(Animal a){ }
面向Animal父类编程,父类是比子类更抽象的。叫面向抽象编程,不是面向具体编程。这样扩展力强
*/
面向抽象编程==面向接口编程,有接口就有插拔,可插拔表示扩展力很强(低耦合度),不是直接焊死的。
接口+多态才可以达到降低耦合度

类型和类型之间的关系

  1. is a(继承),Cat is a Animal extends
    2.has a (关联) ,I has a Pen A{ B b;}
  2. like a (实现),Cooker like a FoodMenu implements

抽象类和接口的区别

1.抽象类是半抽象的,接口是完全抽象的
2.抽象类中有构造方法,接口中没有
3.接口和接口之间支持多继承。类和类之间只能单继承。
4.一个类可以同时实现多个接口,一个抽象类只能继承一个类(单继承)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值