抽象类

sealed,new,virtual,abstract与override

情到浓时终转凉″ 提交于 2020-01-03 23:12:31
1.sealed---“断子绝孙” 密封类不能被继承,不会有子类。密封方法可以重写 基类 中的方法。 2.new---“你是你的,我是我的” new关键字用于显式隐藏从基类继承的成员,也就是说在使用派生类时调用的方法是new关键字新定义出来的方法,而不是基类的方法。在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。即:好比是不用祖宗的东西,而是用自己创造的东西。 using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Child c = new Child(); c.SayHello(); //显示我是子类 ((Parent)c).SayHello(); //显示我是父类 } } class Parent { public void SayHello() { Console.Write("我是父类"); } } class Child:Parent { public new void SayHello() { Console.Write("我是子类"); } } } 3.virtual---"为了子孙后代" 用于修改方法或属性的声明,修改后的方法或属性称作虚成员

接口

拜拜、爱过 提交于 2020-01-02 23:16:51
接口: 为什么使用接口: 为了一个类不可以同时继承多个父类的问题; java 中的接口: 1、属性全都是全局静态常量 2、方法都是全局抽象方法 3、无构造方法 必须知道的接口特性: 1、接口不可以被实例化 2、实现类必须实现接口的所有方法 3、实现类可以实现多个接口 3、接口中的变量都是静态常量 如何使用接口: 1、编写接口 2、实现接口(关键字:implements) 3、使用接口:用多态的方式使用 接口是一种能力,体现在接口的方法上; 面向接口编程: 1、关心实现类有何能力,而不关心实现细节 2、面向接口的约定而不考虑接口的具体实现 如何理解接口是一种能力: 1.可以被多继承 2.设计和实现完全分离 3.更自然的使用多态 4.更容易搭建程序框架 5.更容易更换实现 接口是一种约定: 体现在接口名称和注释上(1、有些接口只有名称 2、方法的实现方式要通过注释来约定) 抽象类和接口的区别: 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象; 2、抽象类要被子类继承,接口要被类实现; 3、接口中只能做方法申明,抽象类中可以做方法申明,也可以做方法实现; 4、接口定义的变量只能是静态常量,抽象类中的变量是普通变量; 5、抽象类中的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法

接口

对着背影说爱祢 提交于 2020-01-02 22:05:33
有时必须从几个类中派生出一个子类,继承它们所以的属性和方法。但是java不支持多重继承。有了接口,就可以得到多重继承的效果。 接口是抽象方法和常量的定义的集合。 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 实现接口类:class SubClass implements Interface{ } 一个类可以实现多个接口,接口也可以继承其它接口。 接口的特点:   用interface来定义。   接口中所有的成员变量都默认是由public static final修饰的。   接口中的所有方法都默认是由public abstract修饰的。   接口没有构造方法。   接口采用多层继承机制。 接口定义举例   public interface Runner{   int D = 1;  ↔  public static final int D = 1;   void start();  ↔  public abstract void start();   public void run();  ↔  public abstract void run();   void stop();  ↔  public abstract void stop(); } 实现接口的类中必须提供接口中所有方法的具体实现内容,方可实例化,否则仍为抽象类

设计模式--七大原则

痴心易碎 提交于 2020-01-02 00:30:15
七大原则: 1)单一职责原则 2)接口隔离原则 3)依赖倒置原则 4)里氏替换原则 5)开闭原则 OCP 6)迪米特法则 7)合成复用原则 设计模式分为三种类型,共23种 1)创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。 2)结构型模式:适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式。 3)行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、责任链模式。 设计原则核心思想: 1)找出应用中可能 需要变化之处,把它们独立出来,不要和那些不需要变化 的代码混在一起。 2)针对接口编程,而不是针对实现编程。 3)为了交互对象之间的松耦合设计而努力。 单一职责原则:一个类只负责一项职责(不是只有一个方法),其核心思想是降低类的复杂度。有时候(逻辑足够简单,类中方法足够少),可以不在类的级别上遵守单一职责原则,但是在方法上遵守单一职责原则。 接口隔离原则(Interface Segregation Principle):客户端不应该依赖它不需要的接口,即一个类对另一类的依赖应该建立在最小接口上。 依赖倒转原则(Dependence Inversion Priciple): 1)高层模块不应该依赖低层模块,二者都应该依赖其抽象。 2

面向接口编程详解——思想基础

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

面向接口编程详解(一)——思想基础

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

面向接口编程详解

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

面试Java前必须了解的10个概念

痞子三分冷 提交于 2020-01-01 02:05:47
1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 构造方法的作用就是初始化。 (2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的初始化。 (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造方法前,先进行对此超类进行非静态对象的初始化。 (4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。 3、 关于构造方法 (1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。 (2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是第一条语句。 4、 有关public、private和protected (1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b

java 起步

╄→尐↘猪︶ㄣ 提交于 2020-01-01 02:05:33
1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。 (2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的初始化。 (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。 (4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。 3、 关于构造方法 (1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。 (2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是 第一条语句。 4、 有关public、private和protected (1)

java 起步

巧了我就是萌 提交于 2020-01-01 02:05:17
1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。 (2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的初始化。 (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。 (4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。 3、 关于构造方法 (1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。 (2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是 第一条语句。 4、 有关public、private和protected (1)