抽象方法

oop面向对象【接口、多态】

大兔子大兔子 提交于 2019-12-02 02:16:43
今日内容 1.接口 2.三大特征 —— 多态 3.引用类型转换 教学目标 1.写出定义接口的格式 2.写出实现接口的格式 3.说出接口中成员的特点 4.能够说出使用多态的前提条件 5.理解多态的向上转型 6.理解多态的向下转型 7.能够完成笔记本电脑案例(方法参数为接口) 第一章 接口 1.1 概述 接口,是 Java 语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是 封装了方法 ,包含抽象方法( JDK 7 及以前),默认方法和静态方法( JDK 8 ),私有方法 ( JDK 9 )。 接口的定义,它与定义类方式相似,但是使用 interface 关键字。它也会被编译成 .class 文件,但一定要明确它并 不是类,而是另外一种引用数据类型。 引用数据类型:数组,类,接口。 接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继承)。一个实现接口的类(可以看做 是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象 类。 1.2 定义格式 public interface 接口名称 { // 抽象方法 // 默认方法 // 静态方法 // 私有方法 } 含有抽象方法 抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体

Java day9【第二十章】接口的定义与使用

会有一股神秘感。 提交于 2019-12-01 23:26:13
【第二十章】接口的定义与使用 一.接口基本定义:   当你可以灵活的使用抽象类和接口进行设计的时候,那么基本上就表示你面向对象的概念理解了,需要大量的代码积累。   抽象类与普通类相比最大的优势在于:可以实现对子类覆写方法的控制。但是在抽象类中可能依然保留有一些普通方法,而普通方法里可能会涉及到一些安全或者隐私的问题,那么这样在我们进行开发的过程之中,如果要想对于外部隐藏所有的实现细节,则可以通过接口来进行描述。   接口可以理解为一个纯粹的抽象类(最原始的定义: 接口之中只包含抽象方法和全局常量 ),但是从JDK1.8开始由于引入了Lambda表达式的概念,所以接口的定义也得到了加强, 除了抽象方法和全局常量之外,我们还可以定义普通方法或静态方法 。如果从设计本身来讲,接口之中的组成还是应该以抽象方法和全局常量为主。    在Java中接口主要使用interface关键字来定义: 范例:定义一个接口: //由于类名称和接口名称的要求相同,所以为了区分类和接口,往往在接口名称前加上I(interface)interface IMessage{ public static final String Info = "梓同科技有限公司"; public abstract String getInfo(); //抽象方法 }   但是现在很明显的问题出现了

Java基础知识详解:abstract修饰符

二次信任 提交于 2019-12-01 20:32:08
目录 abstract详解 abstract和接口的区别 关于abstract的一些面试题 这篇主要分析abstract修饰符的用法,abstract和接口的比较以及常见的面试题。 abstract详解 abstract一般用来修饰类和方法。 1.abstract修饰类 abstract修饰类,会使得类变成抽象类,抽象类不能生成实例,但是可以作为对象变量声明的类型,也就是编译时类型。抽象类相当于类的半成品,需要子类继承并覆盖其中的方法。 注意: 抽象类虽然不能实例化,但是有自己的构造方法。 抽象类和接口(interface)有很大的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类可以有实例方法,并实现业务逻辑。 抽象类不能被final修饰,因为被final修饰的类无法被继承,而对于抽象类来说就是需要通过继承去实现抽象方法。 2.abstract修饰方法 abstract修饰方法会使得这个方法变成抽象方法,也就是只有声明,而没有实现,需要子类重写。 注意: 有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法。 父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现了,子类才有创建对象实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,子类在构造子类对象时需要调用父类(抽象类)的构造方法。 抽象方法不能用private修饰

工厂模式

荒凉一梦 提交于 2019-12-01 19:19:37
简单工厂模式是类的创建模式,又叫做静态工厂方法( Static Factory Method )模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法模式跟简单工厂模式在结构上的不同是很明显的,工厂方法模式的核心是一个抽象工厂类,而简单工厂模式的核心在一个具体类。显而易见工厂方法模式这种结构更好扩展,权力下发,分布式比集中式更具优势。 工厂方法模式和抽象工厂模式对比 工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的推广。 工厂方法模式用来创建 一个 产品的等级结构,而抽象工厂模式是用来创建 多个 产品的等级结构。 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类。 工厂方法模式中具体工厂类只有一个创建方法,而抽象工厂模式中具体工厂类有多个创建方法。 https://www.cnblogs.com/xiaoxi/category/1004551.html 来源: https://www.cnblogs.com/dingpeng9055/p/11714050.html

js面向对象

廉价感情. 提交于 2019-12-01 18:28:58
一. JavaScript面向对象前言 1.1 什么是对象? Everything is object (万物皆对象)。 对象到底是什么,我们可以从两个层次来理解。 对象的组成 方法(有归属)----函数(自由的) 属性(有归属)----变量(自由的) 1.对象是单个事物的抽象 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 2.对象是一个容器,封装了属性(property)和方法(method) 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等) 在实际开发中,对象是一个抽象的概念,可以将其简单理解为 : 数据集或功能集。 1.2 什么是面向对象? 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。今天,许多流行的编程语言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby和Objective-C)都支持面向对象编程(OOP)。 相对于「一个程序只是一些函数的集合,或简单的计算机指令列表。

Java学习笔记之抽象类与接口

戏子无情 提交于 2019-12-01 16:46:06
抽象类(abstract) 抽象类概述 : 一个类被 abstract 修饰表示这个类是抽象类, 自己定义方法但是不实现方法,后代去实现 抽象方法 : 一个方法被 abstract 修饰表示这个方法是抽象方法 ,抽象方法没有方法体 特点 : 1,有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。 抽象类有0-N个抽象方法 2, 抽象类不能实例化,意思是不能 new 一个抽象类 3,凡是继承抽象类的类,必须实现抽象类的方法或者自己也是一个抽象类 4,构造方法和 static 方法不能是抽象的 下面为一个实例 : 抽象类Person 1 public abstract class Person { 2 //私有属性性别 3 private String sex; 4 //有参构造 5 public Person( String sex){ 6 this.sex=sex; 7 } 8 //抽象方法 9 public abstract void doSomething(); 10 11 } 子类Student 1 public class Student extends Person{ 2 3 private String name;//名字 4 private int age;//年龄 5 //有参构造 6 public Student(int age){ 7 super("男");

JAVA基础——抽象类以及final修饰符总结

China☆狼群 提交于 2019-12-01 16:21:32
抽象类是一个没有足够信息去描述的类 抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰 而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。 抽象类的使用原则如下: 1、抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public; 2、抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理; 3、抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类; 4、子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类) final修饰符的使用 1、被final修饰过的类不能被子类继承 2、被final修饰的方法不能被子类重写 3、被final修饰的变量不可重新赋值 来源: https://www.cnblogs.com/ldmboke/p/11692756.html

Java 8 新特性:Lambda 表达式

≯℡__Kan透↙ 提交于 2019-12-01 16:10:22
Lambda 表达式 文 | 莫若吻 ( 注:此文乃个人查找资料然后学习总结的,若有不对的地方,请大家指出,非常感谢!另外,知识都有串联,如果某一处看不懂,就先接着往下看,之后再回头看不明白的地方就会恍然大悟了。 ) 一. 为什么 Java 需要 Lambda 表达式? 如果忽视注解(Annotations)、泛型(Generics)等特性,自 Java 语言诞生时起,它的变化并不大。Java 一直都致力维护其对象至上的特征,在使用过JavaScript 之类的函数式语言之后,Java 如何强调其面向对象的本质,以及源码层的数据类型如何严格变得更加清晰可感。其实,函数对Java 而言并不重要,在 Java 的世界里,函数无法独立存在。 然而,在函数式编程语言中,函数是一等公民,它们可以独立存在,你可以将其赋值给一个变量,或将他们当做参数传给其他函数。JavaScript 是最典型的函数式编程语言。函数式语言提供了一种强大的功能——闭包,相比于传统的编程方法有很多优势,闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。Java 现在提供的最接近闭包的概念便是 Lambda 表达式,虽然闭包与 Lambda 表达式之间存在显著差别,但至少 Lambda 表达式是闭包很好的替代者。 Lambda 表达式为 Java 添加了缺失的函数式编程特点

软件的设计与实现

青春壹個敷衍的年華 提交于 2019-12-01 15:30:31
1.分析和设计方法 我们写软件就是解决用户的需求,我们需要表达和传递下面的信息: 在“需求分析”阶段,我们要搞清楚再问题领域的现实世界里,都有哪些实体,如何抽象出我们真正关心的属性,实体之间的关系是什么,在这个基础上,用户的需求是什么,软件如何解决用户的需求。 在“设计与实现”阶段,我们要搞清楚软件是怎么解决这些需求的? 在“测试和发布”阶段,我们要高清楚软件是否真正解决了需求么? 1)理解,抽象:过滤非核心信息,抽象出关键信息和他们之间的关系 2)找到适合的数学模型:例如:二元一次方程求解 3)根据模型和解法,按部就班地解决问题:着依赖于对数学原理和基本操作的掌握 分析和设计方法 . 以文字为主的:如:Word,ppt文档 . 用图像构建的模型:如:Mind Map,ERD,DFD,UML的各种图,甚至包括Flow Chart流程图 . 用数学公式构建的模型: 如 Vienna Development Method .用类自然语言 + 代码构造的描述, 如 Literate Programming .源代码加注释也能描述 来源: https://www.cnblogs.com/chenliang725/p/11690808.html

抽象

雨燕双飞 提交于 2019-12-01 15:14:00
一:抽象:   定义:模糊的,还未确定的   抽象类:       public abstract class 类名{         public abstract void 方法名();//无大括号,无方法体(抽象方法)         public void show(){//方法体}//普通方法       }   特点:     1:只能被(子类)继承,不能被实例化     2:有抽象方法,也有普通方法     3:有抽象方法的类一定是抽象方法,因为抽象方法只出现在抽象类中,且这个方法至少有一个抽象方法。 二:final:   1:被final修饰的类不可以被继承   2:被final修饰的变量,不可以重新赋值   3:被final修饰的方法,不可以被继承   4:因为不能继承,此类中的方法默认都是final修饰   5:该类不需要有子类,不需要扩展,类中的方法不可以被重写,用final修饰该类。 三:try_catch:   例子:   public class Animal{   public static void main(String [] args){     Scanner in=new Scaner(System.in);     system.out.println("请输入被除数:")     try(       int num1=in