抽象方法

java常见笔试题

為{幸葍}努か 提交于 2020-04-03 05:24:12
JAVA 相关基础知识 1 、面向对象的特征有哪些方面 1. 抽象 : 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2. 继承 : 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3. 封装 : 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性 : 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2 、 String 是最基本的数据类型吗 ? 基本数据类型包括 byte 、 int 、 char 、 long 、 float 、 double 、 boolean 和 short 。

多态

痞子三分冷 提交于 2020-04-02 05:51:35
——“面向对象的三大特性是什么?” ——“封装、继承、多态。” 这大概是最容易回答的面试题了。但是,封装、继承、多态到底是什么?它们在面向对象中起到了什么样的作用呢? 多态 多态(Polymorphic)其实也是一个顾名思义的词:“多态”就是一种事物的“多”种形“态”。 “多态”这个概念在面向对象中同样有多种形态:类的多态、方法的多态、以及实例的多态。 类的多态 类的多态最常见、也最好理解。子类继承了父类(包括实现某个接口)后,父类就有了多种形态:它既可以是父类本身,也可以是它的子类A,还可以是它的子类B、甚至可以是子类A的子类A1……在《 继承 》一文中,这种多态的例子比比皆是,这里就不赘述了。 方法的多态 绝大多数情况下,子类继承了父类之后都会重写父类的方法实现。这时,同一个方法就有了多种不同的实现,这就是一种方法的多态。当然,除了重写之外,还有一种方法的多态叫做“重载”,即通过修改方法的参数列表(参数类型、参数个数等)来为同一个方法提供多种实现。 不过我个人不太喜欢重载,也不太愿意把归入多态之中。Java以方法名+参数列表作为一个方法的“签名”,而重载修改了参数列表,也就修改了方法签名。这时,重载后的这些方法还能称为“同一个方法”的不同实现吗?此外,Java会在编译期就确定使用哪个重载方法,但只有到了运行时才能知道使用的是哪个类重写的方法。也就是说,重载并不具备多态所应有的

难免的尴尬:代码依赖

只愿长相守 提交于 2020-03-30 16:47:33
相关文章连接 动力之源:代码中的泵 高屋建瓴:梳理编程约定 编程之基础:数据类型(一) 编程之基础:数据类型(二) 可复用代码:组件的来龙去脉 重中之重:委托与事件 物以类聚:对象也有生命 难免的尴尬:代码依赖 12.1 从面向对象开始 12.1.1 对象基础:封装 12.1.2 对象扩展:继承 12.1.3 对象行为:多态 12.2 不可避免的代码依赖 12.2.1 依赖存在的原因 12.2.2 耦合与内聚 12.2.3 依赖造成的尴尬 12.3 降低代码依赖 12.3.1 认识抽象与具体 12.3.2 再看“依赖倒置原则” 12.3.3 依赖注入 12.4 框架中的“代码依赖” 12.4.1 控制转换 12.4.2 依赖注入对框架的意义 12.5 本章回顾 12.6 本章思考 在浩瀚的代码世界中,有着无数的对象,跟人和人之间有社交关系一样,对象跟对象之间也避免不了接触,所谓接触,就是指一个对象要使用到另外对象的属性、方法等成员。现实生活中一个人的社交关系复杂可能并不是什么不好的事情,然而对于代码中的对象而言,复杂的"社交关系"往往是不提倡的,因为对象之间的关联性越大,意味着代码改动一处,影响的范围就会越大,而这完全不利于系统重构和后期维护。所以在现代软件开发过程中,我们应该遵循"尽量降低代码依赖"的原则,所谓尽量,就已经说明代码依赖不可避免。 有时候一味地追求"降低代码依赖

深入理解面向对象 -- 基于 JavaScript 实现

痴心易碎 提交于 2020-03-27 08:43:04
我们在学习编程时,避免不了会接触一个概念,叫: 面向对象编程(Object-oriented programming,缩写:oop) (不是搞对象那个对象哈),其实我们的编程方式,不止有面向对象,还有 面向过程编程 、 面向流编程 、 面向函数编程 、 面向接口编程 等。作为一名一直混迹在前端的小菜鸟,今天就来跟大家深入的探讨一下 JavaScript面向对象 。作为程序员,我们多多少少都会接触自己擅长语言之外的编程语言,比如我作为一名前端,同时我还会 Java ,从这两个语言本身出发的话,我们会发现这两种语言的 面向对象 存在着一丝丝的不同,到底哪里不同呢?我们今天就拿这两种语言对比着来,拿具体的实例看一下,到底什么叫 面向对象编程 。 现在很多文章都会讲 面向对象三大特性 、 面向对象七原则 、 设计模式 等概念,今天这篇文章不准备讲这些概念,从实例出发,理解 面向对象 是什么,如何做 面向对象 程序设计。 我们在深入探讨 面向对象 之前,我们先来复习一下 面向过程编程 ,这里可能有人会问了,不是讲 面向对象 吗?为什么还要讲 面向过程 呢?主要是因为, 面向过程编程 是软件思想中的鼻祖。 面向过程编程 还是很好理解的,因为它是一种以 过程 作为中心的编程思想,其中 过程 的含义就是 完成一件事情的步骤 。 面向过程 其实是一种 机械的思想 ,它就像流水线一样

Java面试题1

ε祈祈猫儿з 提交于 2020-03-27 07:32:16
1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间

常见的JAVA面试题

≡放荡痞女 提交于 2020-03-27 07:31:15
1.开发中都用到了那些设计模式?用在什么场合? 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 2. 说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 Session Facade Pattern:使用SessionBean访问EntityBean   Message Facade Pattern:实现异步调用   EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问   Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性   Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性   Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性   EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 3.

PHP之设计模型分类(二)

倖福魔咒の 提交于 2020-03-26 21:26:30
3 月,跳不动了?>>> 创建型模式: 单例模式、工厂模式(简单工厂、工厂方法、抽象工厂)、创建者模式、原型模式。 1、单例模式 目的:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 应用场景:数据库连接、缓存操作、分布式存储。 <?php /** * * 单例模式 * */ class DbConn { private static $_instance = null; protected static $_counter = 0; protected $_db; //私有化构造函数,不允许外部创建实例 private function __construct() { self::$_counter += 1; } public function getInstance() { if (self::$_instance == null) { self::$_instance = new DbConn(); } return self::$_instance; } public function connect() { echo "connected: ".(self::$_counter)."n"; return $this->_db; } } /* * 不使用单例模式时,删除构造函数的private后再测试,第二次调用构造函数后,_counter变成2 */ //

C#--抽象类(转载)

时间秒杀一切 提交于 2020-03-26 09:45:02
在C#中使用关键字 abstract 来定义抽象类和抽象方法。 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们 的实例。 "一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步 一个抽象类只能通过接口和作为其它类的基类使用."- C++ Programming Language by Stroustrup Chapter13.2 抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基类 成员被标示成abstract,或被包含进一个抽象类,必须被其派生类实现。 abstract class ShapesClass { abstract public int Area(); } class Square : ShapesClass { int x, y; // Not providing an Area method results // in a compile-time error. public override int Area() { return x * y; } } 例如,一个包含非抽象方法的抽象类: abstract class MyAbs { public void NonAbMethod() { Console.WriteLine("Non-Abstract

线程的等待唤醒机制;线程的生命周期;线程池;单例设计模式;Java8 接口新特性 (Java Day23)

空扰寡人 提交于 2020-03-25 23:17:33
一,线程的等待唤醒机制【线程的通信机制】 概述:就是线程和线程之间的相互沟通的通信手段。 案例:顾客来包子铺不停的吃包子 ​ 分析: 顾客:可以是一条线程 任务是吃包子 包子铺:可以是一条线程 任务做包子 包子:被线程共享资源 ​ 操作的共同资源是包子,顾客有包子开始吃,吃完了叫包子铺开始做包子,没有包子需要等待 ​ 包子铺有包子等着顾客来吃包子,吃完了开始做包子,做好了等着叫顾客吃 ​ 注意事项: 操作的是同一个资源,需要同步加锁 执行机制是抢占式, ​ 顾客有可能先抢到了要执行,没有包子 等着让给包子铺 ​ 有包子 开始吃 吃完了叫包子铺来做包子 ​ 包子铺抢到了 没有包子开始做包子,做好了把顾客叫过来吃包子 ​ 有包子等待 代码示例 //定义一个包子铺类继承Thread package com.ujiuye.demo; import java.util.ArrayList; public class Baozipu extends Thread { //定义一个存放包子的容器 private ArrayList<String> list; // 有参构造 public Baozipu(ArrayList<String> list) { super(); this.list = list; } //重写run方法指定包子铺的任务 [做包子] @Override public

python(七):元类与抽象基类

你。 提交于 2020-03-24 19:06:44
一、实例创建   在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的。python3默认创建的类是继承了object。 class A(object): def __init__(self, *args, **kwargs): self.name, self.age, self.gender = args[:3] def __new__(cls, *args, **kwargs): print("__new__ has called.") return super(A, cls).__new__(cls) # 可写为 super().__new__(cls) 或 object.__new__(cls) a = A("Li", 27, "male") print(a.name, a.age, a.gender) """ __new__ has called. Li 27 male """ 二、类的创建   以class关键字开头的上下文在定义时就已经被解释执行。而函数(包括匿名函数)在没被调用时是不执行的。这个过程本质上做了一件事情:从元类type那里创建了一个名为A的类,开辟类内存空间,并读取class语句的上下文,将类属性和方法写进去。 print("--解释器开始执行--") def func(): print(