抽象类

抽象类和接口

坚强是说给别人听的谎言 提交于 2019-12-30 05:34:59
抽象类:用abstract关键字来修饰一个类时,这个类叫做抽象类 某种意义上来讲,抽象方法就是被用来重写的,在父类声明的抽象方法(只需声明,不需要去实现)要在子类里边重写,如果子类不想重写,那么再在这个子类里边把这个抽象方法再定义为抽象方法,让这个子类的子类去重写它。 这里有一个规则: 既然父类里面的方法是抽象的,那么对于整个类来说,它就有一个没有实现的方法,这个方法不知道怎么去实现,那么这个类是就是残缺不全的,因此这个类应该被定义为一个抽象类。 java语言规定,当一个类里有抽象方法的时候,这个类必须被声明为抽象类 子类继承父类时,如果这个父类里面有抽象方法,并且子类觉得可以去实现父类的所有抽象方法,那么子类必须去实现父类的所有抽象方法;反之,这个父类里面的抽象方法,子类如果觉得实现不了,那么把就子类也声明成一个抽象类。 抽象方法:用abstract来修饰一个方法时,该方法叫做抽象方法 接口:抽象方法和常量值定义的集合 本质:接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 java在接口里面声明的抽象方法可以不写abstract关键字来标识,因为接口里面所有的方法都是抽象的,因此这个“abstract关键字默认都是省略掉的是单继承,但是现实是生活中很多时候都得是多继承,为了实现多继承,可以选择一个类继承,把其他别的类都封装成接口

Java语言抽象与多态的总结

杀马特。学长 韩版系。学妹 提交于 2019-12-30 05:31:34
一、抽象   1、抽象的相关概念     如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.(如形状是抽象的类,园、三角形是具体类)     用 abstract 修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。但是抽象类中不一定有抽象方法。   2、抽象类的定义     使用关键字 abstract 定义抽象类,语法     【访问权限】 abstract class 类名{         成员列表     }     如:public abstract class Shape{         public abstract void draw();       }       public abstract class Shape{         public void draw(){          //具体代码         }       }   3、抽象类的相关特性     用 abstract 修饰的类就是抽象类。类中包含有抽象方法,该类为抽象类;     抽象类可以有成员和非抽象的成员方法;     抽象类不能被实例化,但可以有构造方法(函数),只能用来继承;     抽象类只能用作基类,表示的是一种继承关系;     继承抽象的非抽象类 必须实现其中的所有抽象方法 已 实现的方法的参数

桥接模式

删除回忆录丶 提交于 2019-12-30 02:55:48
Bridge pattern,结构型设计模式。将抽象部分和实现部分分离,使他们都可以独立的进行变化。 适用场景不一定是抽象和实现的关系,两者各自为一个维度,互相变化不受影响,就可以使用桥接 实现上: 抽象类中持有一个接口 ,抽象类可以扩展出一个维度的不同实现,而持有的接口又有不同的实现,二者可以组合出不同的模式,用户可以使用不同的抽象类实现并为其设置不同的接口实现 比如TextView等继承自View,但整整绘制功能实现类为DisplayList、HardwareLayer、Canvas等 来源: CSDN 作者: 啊咧咧这个名字没人用 链接: https://blog.csdn.net/a12315abc/article/details/103747507

abstract(C# 参考)

让人想犯罪 __ 提交于 2019-12-29 05:01:38
abstract 修饰符指示所修饰的内容缺少实现或未完全实现。 abstract 修饰符可用于类、方法、属性、索引器和事件。 在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。 标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 在此例中,类 Square 必须提供 Area 的实现,因为它派生自 ShapesClass: C# abstract class ShapesClass { abstract public int Area(); } class Square : ShapesClass { int side = 0; public Square(int n) { side = n; } // Area method is required to avoid // a compile-time error. public override int Area() { return side * side; } static void Main() { Square sq = new Square(12); Console.WriteLine("Area of the square = {0}", sq.Area()); } interface I { void M(); } abstract class C : I { public

【C#复习笔记之抽象类】abstract 08.4.3

别等时光非礼了梦想. 提交于 2019-12-29 05:01:29
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其 他类的基类。 标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 抽象类具有以下特性: 抽象类不能实例化。他只提供其他类的继承的接口 当然继承类也可以是抽象的 抽象继承类不必全部实现抽象方法, 部分实现便可 抽象类可以继承自非抽象类 实例类必须实现抽象方法 参考自 http://hi.baidu.com/educast/blog/item/9492aec3336f5f51b219a863.html 抽象类可以包含抽象方法和抽象访问器。 不能用 sealed(C# 参考) 修饰符修改抽象类,这意味着抽象类不能被继承。 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。 一个抽象类可以包含abstract方法,也可包含实例化方法,但继承类(非抽象)必须实现abstract方法 在方法或属性声明中使用 abstract 修饰符以指示方法或属性不包含实现。 抽象方法具有以下特性: 抽象方法是隐式的虚方法。 只允许在抽象类中使用抽象方法声明。 因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如: public abstract void MyMethod();

C# 关键字---abstract

时间秒杀一切 提交于 2019-12-29 05:01:17
abstract 修饰符指示所修饰的内容缺少实现或未完全实现。 abstract 修饰符可用于类、方法、属性、索引器和事件。 在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。 标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 抽象类具有以下特性: 抽象类不能实例化。 抽象类可以包含抽象方法和抽象访问器。 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。 抽象方法具有以下特性: 抽象方法是隐式的虚方法。 只允许在抽象类中使用抽象方法声明。 因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。 实现一个重写方法由 override 提供,此重写方法是非抽象类的一个成员。 在抽象方法声明中使用 static 或 virtual 修饰符是错误的。 除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。 在静态属性上使用 abstract 修饰符是错误的。 在派生类中,通过包括使用 override 修饰符的属性声明,可以重写抽象的继承属性。 MSDN的示例: abstract class

C#基础——abstract

落花浮王杯 提交于 2019-12-29 05:00:54
abstract修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 抽象类具有以下特性:抽象类不能实例化;抽象类可以包含抽象方法和抽象访问器;不能用sealed修饰符修改抽象类,因为sealed会使得抽象类无法被继承;从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。 在方法或属性声明中使用abstract修饰符以指示方法或属性不包含实现。抽象方法具有以下特性:抽象方法是隐式的虚方法;只允许在抽象类中使用抽象方法声明;因为抽象方法声明不提供实际的实现,所以没有方法体,方法什么只是以一个分号结束,并且在签名后没有大括号({});实现由一个重写方法override提供,此重写方法是非抽象类的一个成员;在抽象方法声明中使用static或virtual修饰符是错误的。 //抽象类不能是密封的或静态的 //abstract sealed class TestClass{} //abstract static class TestClass{} abstract class BaseClass { protected int _x=100; protected int _y=150; public abstract void

2019最新整理JAVA面试题附答案

笑着哭i 提交于 2019-12-28 15:37:08
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com/s/igMojff-bbmQ6irCGO3mqA 包含的模块: 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM 如下图所示: 共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。 ==================================================== 一. Java 基础模块 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JDK 其实包含了

抽象类abstract

半城伤御伤魂 提交于 2019-12-28 02:55:32
抽象类abstract 例如:图形类(正方形、三角形···)、动物类(狗,猫···)、家具类(桌子、椅子)这种一类事物的统称类就是抽象类。创建抽象类需要在class前写上abstract 1.抽象类可以有具体的方法,也可以有抽象的方法。只有抽象类有抽象方法。 //抽象类 public abstract class Demo01 { public Demo01 ( ) { System . out . println ( "父类构造方法执行" ) ; } public abstract void eat ( ) ; public void method ( ) { System . out . println ( "ljkklj" ) ; } } 2.抽象类不能直接创建对象使用,想创建对象,必须有子类继承这个抽象类,然后创建子类的对象使用。子类必须重写父类所有抽象方法(快捷键alt+enter),否则编译不通过。 //子类 public class Demo02 extends Demo01 { public Demo02 ( ) { super ( ) ; System . out . println ( "子类构造方法执行" ) ; } @Override public void eat ( ) { System . out . println ( "fish" ) ; } ;

C#随笔

≡放荡痞女 提交于 2019-12-28 02:55:13
2.C#基础 2.1类中的静态方法 只能通过类名调用,不能像其它方法可以被对象直接调用 2.2 构造方法 实例化构造函数 显式调用是在创建对象的时候,用于初始化实例,默认隐式调用。而静态构造函数完全用于初始化类的静态成员(创建实例或者引用任何一个静态成员之前)且不能被继承或直接调用,最多在一个程序域中被调用一次; 2.3 析构函数~function()用于释放资源,调用顺序和构造函数相反; 2.4 继承 类继承只能从一个基类,而接口可以是多个 2.5 委托 委托函数列表。 2.6 事件 基于委托的 "订阅者","发行者" 多对多模式,订阅+= 取消订阅-= 2.7 using 的使用可以直接引用其它类的,而不用增加限定符“.”,在程序段中使用 using 可以在当前程序运行结束后门自动释放该资源 2.8 泛型 使用形参类型代替了具体的实际参数类型,实现了面向对象的代码复用。 2.9 virtual 在基类(父类)中用virtual修饰符声明一个虚方法,然后在在派生类(子类)中用override修饰符覆盖基类虚方法。表明是对基类的虚方法重写。这种优势在于它可以在程序运行时再决定调用哪一个方法,这就是所谓的“运行时多态”或者称动态绑定。 3.0 abstract 抽象类用abstract 修饰 同样方法用abstract修饰的就是抽象方法。抽象类不能实例化