- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
07_抽象类接口要点
为什么需要抽象类 抽象理解:笼统,模糊,看不懂!不具体。 抽象类的定义及使用规则 包含一个抽象方法的类就称为抽象类。 抽象类和抽象方法都要使用abstract关键字声明。 抽象方法只需声明,而不需要实现。 抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部方法。 abstract 修饰符练习 首先定义一个类Person 属性:name,age 方法:eat() 在Person里面再定义一个抽象的方法say(),查看结果 结果:程序报错,含有抽象方法的类,必须定义为抽象类 尝试声明一个对象,然后new一个Person类的实例,查看结果。 结果:程序报错,抽象类可以声明,但不能实例化。 写一Student类,继承Person类。查看结果。 结果:子类必须重写父类(抽象类)里面的全部抽象方法。增加方法体,使之成为一个非抽象方法。可以空实现。 如果子类没有实现抽象基类(父类)中所有的抽象方法,则子类也必须定义成一个抽象类。 思考 含有抽象方法的类,必须定义为抽象类,如果一个类中没有抽象方法,那可以定义为抽象类吗?使用程序验证。 答案:可以将没有任何抽象方法的类声明为abstract。 大家想下,这样做有什么作用呢? 答案:避免由这个类直接创建任何的对象。(抽象类,只能声明,不能实例化,如果想使用抽象类,可以实例化其子类) private abstract void fun() 这样定义可以吗? 答案:private 是私有的方法,不能被子类所继承(不能被子类重写)abstract 是抽象方法,必须被继承(被子类重写) 抽象类练习 题目:用抽象类实现多态 假设人类分两种学生和老师 student 属性:姓名、年龄、成绩(score) 方法,sayHello() 打印学生的个人信息 Teacher 属性:姓名、年龄、工资(salary) 方法,sayHello() 打印教师的个人信息 注意: Student和Teacher的sayHello(),说话的内容不一样 抽象类和一般类的异同点。 相同点: 抽象类和一般类都是用来描述事物的,都在内部定了成员。 不同点: 一般类有足够的信息描述事物。 抽象类描述事物的信息有可能不足 一般类中不能定义抽象方法,只能定非抽象方法。 抽象类中可定义抽象方法,同时也可以定义非抽象方法。 一般类可以被实例化。 抽象类不可以被实例化。化。 final关键字 final是修饰符,修饰类、方法及变量 final 修饰的类不能被继承 final 修饰的方法不能被覆写 final 修饰的属性不能被修改,即只能赋值一次 总结:被final修饰的即为最终(终极版) 为什么要用final修饰变量: 其实在程序中如果一个数据是固定的, 那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。 而且这个变量名称的值不能变化,所以加上final固定。 命名规范:常量所有字母都大写,多个单词,中间用_连接 小结 用abstract关键字来修饰一个类时,这个类叫抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。 abstract类必须被继承,abstract方法必须被重写。 抽象类不能被实例化(直接创建对象)。 抽象方法只需声明,而不需实现(无方法体)。 初识接口 为什么在买 USB 电脑鼠标的时候,不需要问电脑配件的商家,USB 鼠标是什么型号的? 也不需要询问是满足什么要求?原因就是 USB 接口是统一的、固定不变的一种型号,是一种规范。所有的厂家都会按照这个规范,来制造 USB 接口的鼠标。这个规范说明制作该 USB类型的鼠标应该做些什么,但并不说明如何做。 而 Java 程序设计中的接口,也是一种规范。这个接口定义了类应该做什么?但不关心如何做?即接口中只有方法名,没有方法体。 接口 如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。 接口是抽象方法和常量值的定义的集合。 从本质上讲,接口是一种特殊的抽象类。这种抽象类中包含常量和方法的定义,而没有变量和方法的实现。例如 注意:在接口中,所有的成员都是public访问类型的,而不论是否用public关键字修饰;接口里的变量都是用public static final标识的,所以,接口中定义的变量就是全局静态常量。接口中的方法默认都是public abstract 类型的。 接口的使用 一个类只能用implements关键字去实现一个接口中的所有方法。 public class Fish implements Animal {
文档评论(0)