抽象方法

抽象类、抽象方法的特点及使用

我只是一个虾纸丫 提交于 2019-12-20 09:04:15
抽象类 当多个类中出现了相同功能,但功能主题不同, 这时可以向上抽取,这时,只抽取功能定义,而不抽取功能主体。 抽象:看不懂 抽象类的特点: 1、抽象方法一定定义在抽象类中,抽象类可以有非抽象方法 2、抽象方法和抽象类都必须被abstract关键字修饰 3、抽象类不可以用new创建对象,因为调用抽象方法没意义 4、抽象类中的方法如果被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用 如果子类值副高了部分抽象方法,那么子类还是一个抽象类 抽象类和一般类没有太大的不同 该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西 这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体 通过抽象方法来表示 抽象类比一般类多了个抽象方法,就是类中可定义抽象方法。 抽象类不可以实例化。 特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象 示例代码 abstract class Student { abstract void study();//不是{}…………注意,学习的方法为抽象,不能创建对象 void sleep() { System.out.println("shuijiao"); } } class BassStudent extends Student { void study() { System.out.println("bass

面向对象之继承与派生

强颜欢笑 提交于 2019-12-20 08:20:06
阅读目录 一 初识继承 二 继承与抽象(先抽象再继承) 三 继承与重用性 四 派生 五 组合与重用性 六 接口与归一化设计 七 抽象类 八 继承实现的原理(可恶的菱形问题) 九 子类中调用父类的方法 一 初识继承 什么是继承 继承指的是类与类之间的关系,是一种什么是什么的关系,功能之一就是用来解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码) 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass 查看继承 >>> SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类 (<class '__main__.ParentClass1'>,) >>> SubClass2.

面向对象之继承

十年热恋 提交于 2019-12-20 08:19:40
初识继承 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。 子类会“”遗传”父类的属性,从而解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码) python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 passclass ParentClass2: #定义父类 passclass SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass passclass SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass 查看继承 SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类(<class '__main__.ParentClass1'>,)SubClass2.__bases__(<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>) 提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类

接口和抽象类有什么联系和区别?

会有一股神秘感。 提交于 2019-12-19 15:22:00
接口和抽象类有什么联系和区别? ———————————————— 抽象类: 一个类中有抽象方法,这个类就变成了抽象类。 抽象类中class的前面必须有abstract修饰符。 抽象类中可以有普通方法,也可以有抽象方法,而抽象方法的个数可以是0个,也可以是多个。 子类继承父类,必须重写全部抽象方法,除非这个类也变成抽象类。 接口: 表面上看,接口是一种特殊的抽象类,但是类就是类,接口是接口,是并列的关系。 接口中所有方法都必须是抽象的。(1.8之后允许接口定义非抽象方法) 接口中方法定义默认为public abstract类型,成员变量默认为public static final 类型。(省略系统会默认补全)。 抽象类和普通类的区别: 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,和普通类一样,同样可以拥有成员变量和普通的成员方法,抽象类和普通类的区别如下: 抽象方法的访问修饰符必须为public和protected。 抽象类不能被实例化。 如果一个类继承于抽象类,则子类必须实现父类的抽象方法,如果子类没有实现父类的抽象方法,则子类必须也是一个抽象类。 抽象类和接口的区别: 一个类只能继承一个抽象类,而一个类可以实现多个接口。 抽象类可以有构造方法,接口中不能有构造方法。 抽象类中可以有成员变量,接口中没有成员变量。(被final修饰变成了常量)。

Java学习个人备忘录之抽象类

不打扰是莪最后的温柔 提交于 2019-12-19 05:29:10
抽象类 特点: 1. 方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中。该类必须也被abstract修饰 2. 抽象类不可以被实例化. 为什么? 因为调用抽象方法没意义。 3. 抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,这个子类还是抽象类。 abstract class 犬科 { abstract/*抽象*/ void show(); }//抽象方法所在的类也必须的抽象的. class 狗 extends 犬科 { void 吼叫() { System.out.println("汪汪"); } } class 狼 extends 犬科 { void 吼叫() { System.out.println("嗷嗷"); } } class AbstractDemo { public static void main(String[] args) { } } 细节理解: 1. 抽象类中有构造函数吗? 有,用于给子类对象进行初始化. 2. 抽象类可以不定义抽象方法吗? 可以,但是很少见,目的就是不让该类创建对象. AWT的适配器对象就是这种类. 通常这个类中的方法有方法体,但是却没有内容. abstract class Demo { void show1() {} void show2() {} } 3.

java抽象类和接口

北慕城南 提交于 2019-12-19 04:53:50
深入理解Java的接口和抽象类   对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:   一.抽象类   二.接口   三.抽象类和接口的区别   若有不正之处,请多多谅解并欢迎批评指正,不甚感激。   请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类   在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: 1 abstract void fun();   抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。   下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法

抽象类

喜夏-厌秋 提交于 2019-12-19 01:49:19
抽象类: 抽象:笼统,模糊,不具体。 特点: 1,方法 *只有声明没有实现* 时,该方法就是抽象方法,需要被abstract修饰。 抽象方法必须定义在抽象类中。该类必须也被abstract修饰。 2,抽象类不可以被实例化,因为调用抽象方法没意义。 3,抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化。否则,这个子类还是抽象类。   关于抽象类的一些问题: 1,抽象类中有构造函数吗? 有,用于给子类对象进行初始化。 2,抽象类可以不定义抽象方法吗? 可以,但是很少见,目的就是不让该类创建对象。 AWT的适配器对象就是这种类。 通常这个类中的方法有方法体,但是却没有内容。(大括号中没有内容) abstract class Demo { void show1() {} void show2() {}} 3,抽象关键字不可以和那些关键字共存? private 不行 //如果定义私有方法,抽象类的子类中的方法不能覆盖。 static 不行 // 声明static说明可以直接用类名调用该方法,声明abstract说明需要子类重写该方法, 矛盾。 final 不行 4,抽象类和一般类的异同点。 相同点: 抽象类和一般类都是用来描述事物的,都在内部定了成员。 不同: 1.一般类有足够的信息描述事物。 抽象类描述事物的信息有可能不足。 2.一般类中不能定义抽象方法,只能定非抽象方法。

IO概述、异常、File文件类_DAY19

自古美人都是妖i 提交于 2019-12-19 01:24:13
IO概述: 操作数据的工具 IO流,即数据流,数据像水流一样通过IO工具进行传输。 程序 <IO> 硬盘 绝对路径与相对路径 1:异常(理解) (1)就是程序的非正常情况。 异常相关操作: 创建异常对象(JDK已定义的异常会自动创建对象,自定义异常需要手动创建) 抛出异常(JDK已有定义的异常会自动抛出异常,自定义异常需要手动抛出) 处理异常: 程序员在有异常抛出时,异常的处理方法有两种:(1)将异常捕获并处理(2)声明抛出异常 (2)异常的继承体系结构: Throwable: |--Error 严重的问题,不需要处理的。 |--Exception 非RuntimeException必须进行处理。两种方案,点击鼠标即可。 |--RuntimeException 运行时期异常,需要修正代码。 (3)jvm的默认处理方式: 默认情况下,jvm会采用默认处理方案: 把异常的全路径名称,原因,及位置等信息显示出来。 注意: 如果是jvm的默认处理方式,那么,它会在出问题的地方结束。 (4)我们自己的处理方案: A:处理方式之一:使用捕获 try...catch...finally 基本格式: try { 可能有问题的代码; }catch(异常对象) { 对问题的处理; }finally { //一定会执行的代码 释放资源; } 变形格式: try...catch try...catch..

JAVA设计模式之观察者模式

被刻印的时光 ゝ 提交于 2019-12-18 09:55:07
设计模式学习04:观察者模式 本文转载: https://www.cnblogs.com/luohanguo/p/7825656.html 作者: 神仙果 JAVA设计模式之观察者模式 1、初步认识 观察者模式的定义:   在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 大白话:   其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 2、这个模式的结构图 3、可以看到,该模式包含四个角色 抽象被观察者角色 :也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。 抽象观察者角色 :为所有的具体观察者定义一个接口,在得到主题通知时更新自己。 具体被观察者角色 :也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。 具体观察者角色 :实现抽象观察者角色所需要的更新接口,一边使本身的状态与制图的状态相协调。 4、使用场景例子   有一个微信公众号服务,不定时发布一些消息,关注公众号就可以收到推送消息,取消关注就收不到推送消息。 5、观察者模式具体实现 1、定义一个抽象被观察者接口 package com.jstao.observer; /*** *

代码整洁之道

耗尽温柔 提交于 2019-12-18 01:12:55
代码整洁之道 代码猴子(Code Monkey): 低水平编码者. 童子军规. 技艺(craftsmanship): 知和行. 学写整洁代码, 掌握原则和模式, 并付出行动. 整洁代码 代码呈现了需求的细节. 这些细节无法被忽略或抽象, 必须要严谨, 精确, 规范和详细. 糟糕的代码 糟糕的代码可能毁掉一家公司. 稍后等于永不(Later equals never). 随着混乱的增加, 团队生产力也持续下降吗最后将趋向于零. 花时间保持代码整洁不但有关效率, 还有关生存. 代码整洁的程序员就像是艺术家, 它能用一系列变换把一块白板变作由优秀代码构成的系统. 在写整洁代码时, 要遵循大量的小技巧, 贯彻刻苦学习整洁感. 敷衍了事的错误处理大麦知识程序员忽视细节的一种表现: 内存泄漏; 竞态条件代码; 前后不一致的命名方式. 整洁的代码从不隐藏设计者的意图. --- 干净利落的抽象和直截了当的控制语句. 简单代码, 依其重要性: 能通过所有测试. 没有重复代码. 体现系统中的全部设计理念. 包括尽量少的实体, 比如类, 方法和函数等. 有意义的命名是体现表达力的一种方式, 需要修改好几次才能确定下名字. 如果一个对象功能太多, 最好是切分为两个或多个对象. 如果方法功能太多, 使用抽象功能重构. 消除重复,提高表达力, 提早构建简单抽象, 在代码整洁方面很有用.