抽象方法

抽象类

十年热恋 提交于 2020-03-01 02:56:14
在定义类时,前面加上abstract关键字修饰的类叫抽象类。 抽象类中有抽象方法,这种方法是不完整的,仅有声明而没有方法体。抽象方法声明语法如下: abstract void f(); //f()方法是抽象方法 copy 那我们什么时候会用到抽象类呢? 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。也就是说抽象类是约束子类必须要实现哪些方法,而并不关注方法如何去实现。 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。 所以由上可知,抽象类是限制规定子类必须实现某些方法,但不关注实现细节。 那抽象类如何用代码实现呢,它的规则如下: 用 abstract 修饰符定义抽象类 用 abstract 修饰符定义抽象方法,只用声明,不需要实现 包含抽象方法的类就是抽象类 抽象类中可以包含普通的方法,也可以没有抽象方法 抽象类的对象不能直接创建,通常是定义引用变量指向子类对象。 我们来写一写代码吧! 1、在home/project/目录下创建一个抽象类TelePhone.java。 2、填写需要子类实现的抽象方法。 //抽象方法 public abstract class TelePhone { public abstract void call(); //抽象方法,打电话 public

继承中的关键字

点点圈 提交于 2020-02-29 11:22:09
继承中的关键字 1. 继承的基本含义: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。子类最基本的功能就是维持父类的基本操作,但是子类可以对其功能的扩充。 2. extends 格式:class A extends B { } 表示A类是B类的一个子类,B类是A类的 唯一 父类。 在Java当中的继承是单继承,不允许多继承(class A extends B,C),单继承就是子类只有一个唯一的父类,但是可以多重继承(class A extends B ,class B extends C)。 子类会显式继承父类当中所有的非私有化的成员变量和成员方法,所有的私有化成员可以通过Setter和Getter方法来操作,且构造方法不会被继承。 子类在继承父类成员的同时,可以进行扩展,定义属于自己的成员变量和成员方法,对其功能进行扩充。 3.super 功能1: 调用父类的成员变量和方法 。 子类继承父类中的成员变量和方法,当子类声明了与父类相同的成员变量以及对父类当中的成员方法进行重写之后,使用子类实例调用的成员变量与方法就是子类当中的成员变量和方法,而这时想要调用父类当中已经被重写被覆盖的成员就需要用到super关键字,在子类当中使用super关键字在调用成员变量和方法时会直接跳过子类

java基础知识(一)

人盡茶涼 提交于 2020-02-28 22:07:05
1.JAVA 面向对象的语言,对象包含两个含义,一个是数据一个是操作。 JAVAEE,java企业版。 JAVASE,java标准版。 JAVAME,主要面向嵌入式等设备应用的开发 jdk是开发工具包,jre是开发环境,jre包括jdk,写java需要jdk,运行需要jre。 2.面向对象的三(四)种特性 1.继承:继承是从已有的类种得到继承信息创建新类的过程。提供继承信息的类称为父类,得到继承信息的类称为子类。 2.封装:将数据与操作数据的方法捆绑起来,对数据的访问只能通过已定义的接口。 3.多态:指允许不同子类型的对象对同一消息作出不同的响应,也就是用同样的对象调用同样的方法但是做了不同的事。方法重载:就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。 方法重写:若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 4.(抽象):抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 3.访问权限修饰符 public、private、protected, 以及不写(默认)时的区别 作用域 当前类 同package 子孙类 其他package public √ √ √ √

java基础学习3---面向对象

妖精的绣舞 提交于 2020-02-27 10:59:35
1、面向对象 对象:用来描述客观事物的一个实体,由一组属性和方法构成。 面向对象: 人关注对象 人关注事物信息 类 确定对象将会拥有的属性和方法 类的特点: 类是对象的类型 具有相同属性和方法的一组对象的集合。 类和对象的关系 类是抽象的概念 对象是一个能看到的具体实体 类是对象的类型 对象是特定类型的数据 具体开发中,先定义类再实例化对象。 对象实例化 Cat cat = new Cat ( ) ; 实例化过程分两部分: 声明对象 Cat cat 实例化对象 new Cat() 注意: 1.每次new对象都会产生新的实例化对象。 2.多个对象可以指向同一块实例化空间。 3.对象必须被实例化之后才能使用。 4.对象间的引用,实际上传递的是堆内存的引用。 构造方法 1、构造方法与类同名,没有返回值。 2、只能在对象实例化的时候调用。 3、没有指定构造方法时,系统会自动添加无参的构造方法。 4、当指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。 5、一个类中可以有多个构造方法。 单一职责原则 单一职责原则(SRP:single responsibility principle),又称单一功能原则。 面向对象的五个基本原则之一(SOLID:SRP、OCP开放封闭原则、LSP里氏替换原则、DIP依赖倒置原则、ISP接口分离原则)。

Java 基础 接口和多态

帅比萌擦擦* 提交于 2020-02-27 08:58:26
接口 接口的概念   接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。   接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。   请记住:一切事物均有功能,即一切事物均有接口。 接口的定义   与定义类的class不同,接口定义时需要使用interface关键字。   定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。    定义格式: public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; }   使用interface代替了原来的class,其他步骤与定义类相同:    接口中的方法均为公共访问的抽象方法    接口中无法定义普通的成员变量   类实现接口   类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。    其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能: class 类 implements 接口 { 重写接口中方法 }   在类实现接口后,该类就会将接口中的抽象方法继承过来

抽象类和接口

荒凉一梦 提交于 2020-02-27 08:41:17
抽象类 在Java中,你可以只给出方法的定义不去实现方法的具体事物,由子类去根据具体需求来具体实现。这种只给出方法定义而不具体实现的方法被称为 抽象方法 ,包含一个或多个抽象方法的类称为 抽象类 。 举个例子来说:一个图形类应该有面积的方法,但是不同的图形求面积方法不一样。分析事物,发现共性,就出现了向上抽取。 方法的声名相同,但是方法功能主体不同,这样就可以抽取,但只是抽取方法声名,但不抽取方法主体,称这个方法就是抽象方法。 方法前加上 abstract 关键字, 表示这是一个抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。 包含抽象方法的类, 必须加上 abstract 关键字表示这是一个抽象类. //有抽象方法的类也必须被声明为abstract abstract class Shape { //抽象方法,不能有“{}” abstract public void draw ( ) ; } 抽象类不能直接实例化. 抽象方法不能是 private 的 抽象类中可以包含其他的非抽象方法, 也可以包含字段. 这个非抽象方法和普通方法的规则都是一样的, 可以被重写,也可以被子类直接调用 //抽象类 abstract class People { //抽象方法 public abstract void work ( ) ; } class Doctor extends

抽象方法

早过忘川 提交于 2020-02-26 19:15:46
抽象方法:父类当中的方法,不确定如何进行 {} 方法体实现,那么这就是一个抽象方法 例如:动物类:叫{} // 叫方法就是抽象方法,不确定以何种声音叫 格式: 抽象方法:加上 abstract 关键字,然后去掉大括号,直接分号结束; 抽象类:抽象方法所在的类,必须是抽象类, 在 class 之前加上 abstract 即可 抽象类中可有抽象方法和成员方法 例如: public abstract class Animals { public abstract void eat(); public void method(){} } 抽象类和抽象方法的使用: 1.不能直接 new 抽象类对象 2.必须用一个子类来继承抽象父类 3.子类必须重写抽象父类的全部抽象方法 重写时:去掉 abstract ,补上方法体大括号 4.创建子类对象进行使用 若抽象类的子类也是抽象类,则可以不必重写所有方法 来源: https://www.cnblogs.com/aoligei/p/12367849.html

设计模式前传——学习设计模式你要先知道这些

喜夏-厌秋 提交于 2020-02-26 13:34:05
为什么要学设计模式? 面试经常被问到 以前总觉得设计模式是“花拳绣腿”,实际开发中没什么卵用,其实有好多种设计模式自己在无形中就使用了,只是自己不知道 设计模式是软件开发人员的“标准词汇”,学习设计模式是个人技术能力提高的捷径 设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要” 软件设计模式概述 软件设计模式的产生背景 “设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1987 年,肯特·贝克(Kent Beck)和沃德·坎宁安(Ward Cunningham)首先将建筑领域的模式思想应用在 Smalltalk 中的图形用户接口的生成中,但没有引起软件界的关注。 1994 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在本教程中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,

100+经典Java面试题及答案解析

情到浓时终转凉″ 提交于 2020-02-26 09:59:53
面向对象编程(OOP) Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性。 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。 下面列出了使用封装的一些好处: 通过隐藏对象的属性来保护对象内部的状态。 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。 禁止对象之间的不良交互提高模块化。 参考这个文档获取更多关于封装的细节和示例。 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。 继承 继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。 抽象 抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类

关于抽象类及抽象方法

此生再无相见时 提交于 2020-02-25 23:28:32
abstract 修饰的类叫做抽象类 ,abstract修饰的方法叫抽象方法 一 、抽象类 抽象类不够具体、不够完整、不该独立存在; 抽象类能够被继承,为子类提供共性和方法; 可作引用被声明,强制使用多态; 二、抽象方法 抽象方法只能定义在抽象类中 抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类 子类继承之后必须进行覆盖,否则子类亦为抽象类 使用抽象方法时访问修饰词只能是protected 或者为 public 例如: public abstract void m(); 或者 protected abstract void m(); 注意:抽象方法中不能有final和static 来源: CSDN 作者: man_OR_boy 链接: https://blog.csdn.net/man_OR_boy/article/details/104505160