抽象类

C#面向接口编程详解(1)——思想基础

女生的网名这么多〃 提交于 2020-01-13 09:12:33
 我想,对于各位使用面向对象编程语言的程序员来说,“ 接口 ”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。   1.面向接口编程和面向对象编程是什么关系   首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。   2.接口的本质   接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:    以下是引用片段: interface InterfaceName   {   void Method1();   void Method2(int para1);   void Method3(string para2,string para3);   }      那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑:   1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能…

设计模式之行为型模式(四)

风格不统一 提交于 2020-01-12 23:38:30
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式是 GoF 设计模式 中最为庞大的一类,它包含以下 11 种模式。 模板方法(Template Method)模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。 命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。 状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。 观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象

java练习 抽象类和接口01

六眼飞鱼酱① 提交于 2020-01-12 12:03:56
题目: 创建一个Vehicle类并将它声明为抽象类。 在Vehicle类中声明一个名为run的实现打印”Running”功能的方法和一个名为wheelsNum的抽象方法,该方法没有返回值。 创建两个类Car和Motorbike,均继承自Vehicle,并在这两个类中实现wheelsNum方法。 在Car类中应当显示“四轮车”信息,而在Motorbike类中应当显示“双轮车”信息。 创建另一个带main方法的类Test,在其main方法中使用多态的方式分别调用Car和Motorbike中的wheelsNum方法以及run方法。 代码: //创建一个Vehicle类并将它声明为抽象类。 public abstract class Vehicle { //声明一个名为run的实现打印”Running”功能的方法 public void run() { System.out.println("Running"); } //声明一个名为wheelsNum的抽象方法,该方法没有返回值。 public abstract void wheelsNum(); } public class Motorbike extends Vehicle{ @Override public void wheelsNum() { System.out.println("双轮车"); } } public class

java之初识abstract关键字-_-

杀马特。学长 韩版系。学妹 提交于 2020-01-12 05:02:39
abstract关键字 abstract关键字是抽象的意思,所书写的内容会带有抽象的概念 用法(唯二): 1.abstract修饰类 书写格式: abstract class 类名{} 抽象类只能声明引用类型,不能创建对象,即不能实例化一个抽象类,所以抽象类在用在多态创建对象 抽象类不能被final修饰,final修饰的类是无法继承的,而抽象 类是通过子类的继承实现(重写)抽象方法,产生矛盾 抽象类内可以存在: - 代码块 - 常量 - 变量 - 构造方法 - 普通方法: - 抽象方法 继承中的抽象类: 1.如果一个类中有抽象方法,则这个类必须是抽象类,而抽象类中未必有抽象方法! 2.子类继承抽象方法,则继承了父类中的抽象方法,如果子类不想变成抽象类,则子类必须实现(即覆盖)父类中声明的所有抽象方法 3.继承抽象类的子类若不是抽象类,则可以创建对象,并可以被抽象类声明的引用指向,即合乎多态的用法 注意: 抽象类虽然不能创建抽象对象,但允许拥有构造方法,创建子类对象时仍会加载构造器 abstract类中可以有普通方法:,可以被子类继承,覆盖方法,子类可以由super调用方法 abstract类中和接口中有同名方法时,要在子类中 重写 重名的抽象类方法,接口的重名方法不再操作 2.abstract修饰方法 书写格式: public abstract void method ( ) ;

java接口

心不动则不痛 提交于 2020-01-12 04:51:32
当一个抽象类中的方法都是抽象方法的时候 ,这是可以将它定义和表示为接口 关键词interface 接口是 抽象类的特例 创建 接口类 package java01; //接口是不能实例化的,只有子类覆盖接口的所有的抽象方法,才可以实例化。 public interface test { public static int num = 1122; // 只是声明,没有实现 abstract void show1(); abstract void show2(); } 接口实现类的代码如下: package java01; public class interfaceDemo implements test { // 实现接口中的方法 @Override public void show1() { // TODO 自动生成的方法存根 } // 实现接口中的方法 @Override public void show2() { // TODO 自动生成的方法存根 } public static void main(String[] args) { 只有实现了接口类中的抽象方法, 才可以实例化。 interfaceDemo infd = new interfaceDemo(); System.out.println(test.num); System.out.println(infd.num

twelve day("多态","抽象类","接口")

断了今生、忘了曾经 提交于 2020-01-11 23:03:35
多态 多态就是一个对象的多种形态 //父类引用子类对象 Aniaml a = new Dog ( ) ; //特点 //1,不能使用子类特有的方法 //2,调用方法时,编译看左边,运行看右边 好处: 可以让我们面向父类,操作所有的子类共性的内容 提升了程序的扩展性 多态的转型 //向下转型其实就是父类引用子类对象 Aniaml a = new Dog ( ) ; //向上转型是为了能够使用子类特有的内容 //与强制类型转换的格式一样 Dog d = ( Dog ) a ; //转型异常:ClassCastException //为了解决这个异常,提供了关键字: instanceof //通过instanceof关键字,可以判断要转的类型是否符合当前类型 boolean 结果 = 多态变量名 instanceof 类名; //转型仅仅是对象的形态发生了变化,对象的地址并没有变化 抽象类 抽象方法和抽象类要使用abstract关键字来修饰 抽象方法:没有方法体的方法就是抽象方法 当无法确认方法体的具体内容时,可以使用抽象方法 抽象类:含有抽象方法的类一定是抽象类 //抽象类格式: public abstract class 类名 { } //抽象方法格式: public abstract 返回值类型 方法名(参数列表) ; 特点 1:抽象类不能直接创建对象;(语法规定) 2:抽象类中

抽象类

喜你入骨 提交于 2020-01-11 10:46:08
定义方法:abstract关键字 1.定义一些方法,子类必须完全实现这个抽象中所有的方法 2.不能从抽象类创建对象,它的意义在于被扩展 3.抽象类通常具有抽象方法,方法中没有大括号 4.抽象方法不必实现具体的功能,由子类来完成 5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义 6.抽象类的方法可以有参数,也可以为空 7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数 8.抽象类不能实例化为对象 9.抽象类存在的目的是为了让子类继承 来源: https://www.cnblogs.com/starshine-zhp/p/12179108.html

设计模式@第16章:模板方法模式

烂漫一生 提交于 2020-01-10 23:02:06
第16章:模板方法模式 一、豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就想到这个方案,因此就直接使用, 不再使用传统的方案来引出模板方法模式 ) 二、模板方法模式基本介绍 基本介绍 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),z 在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 简单说,模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤 这种类型的设计模式属于行为型模式。 三、模板方法模式原理类图 (一)模板方法模式的原理类图 对原理类图的说明-即(模板方法模式的角色及职责) AbstractClass 抽象类, 类中实现了模板方法(template),定义了算法的骨架,具体子类需要去实现 其它的抽象方法 operationr2,3,4 ConcreteClass 实现抽象方法 operationr2,3,4,

Python中抽象类的实现 Hackerrank Day 13: Abstract Classes

感情迁移 提交于 2020-01-10 21:13:30
在抽象类中定义抽象方法,无需实现功能 子类继承抽象类,但是必须定义抽象方法的具体功能 Hackerrank Example Code from abc import ABCMeta, abstractmethod class Book(object, metaclass=ABCMeta): ######### def __init__(self,title,author): self.title=title self.author=author @abstractmethod ######### def display(): pass ######### #Write MyBook class class MyBook(Book): def __init__(self,title,author,price): super().__init__(title,author) ######## self.price=price def display(self): ####### print('Title: '+self.title+'\nAuthor: '+self.author+'\nPrice: '+ str(self.price)) title=input() author=input() price=int(input()) new_novel=MyBook(title

java常见问题200

99封情书 提交于 2020-01-10 14:01:20
Java 基础 1. JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.final 在 java 中有什么作用? 5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String("i")一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用 final 修饰吗? 14.接口和抽象类有什么区别? 15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和 Hashtable 有什么区别? 22.如何决定使用 HashMap 还是 TreeMap? 23.说一下 HashMap 的实现原理? 24.说一下 HashSet