再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法。定义测试类ShapeTest对圆和矩形的面积和周长进行测试。
String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? String是字符串常量,后两者是字符串变量。其中,StringBuffer是线程安全的,而StringBuilder是非线程安全的,线程安全会带来额外的开销,所以StringBuilder效率会高一些。 String不可变是因为在JDK中String类被声明为一个final类。
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。 c# 基础语法 基础语法 第一个程序 using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.WriteLine("Hello World"); } } 数据类型 类型 描述 范围 默认值 bool 布尔值 Tru
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
1、接口是多继承,抽象类是单继承(一个类仅能继承一个抽象类,但可以继承多个接口)
前言: 在这个竞争激烈的时代,想要脱颖而出,除了要比别人掌握更多的技术的同时,也要让你的能力被别人知道,面试就是一个途径。特整理以下面试题,供广大在路上的朋友们参考。 面试题: 1、public,pr
Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等领域。由于Java主要用于服务器端的开发,因此Java应用的部署环境有很多为Linux。 Windows操作系统的目录结构,是以盘符为单位,C盘、D盘、E盘等等,数据存储在各个盘符之下,而Linux操作系统最顶层只有一个根目录root,所有文件都存储在这一个根目录之下。 Linux不像Windows的图形操作界面,是通过命令的方式进行操作,常用命令有: a . pwd:用于显示当前工作目录; b . ls:用于查看当前工作目录内容; c . cd:用于改变当前工作目录。
一、JAVA基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等领域。由于Java主要用于服务器端的开发,因此Java应用的部署环境有很多为Linux。 Windows操作系统的目录结构,是以盘符为单位,C盘、D盘、E盘等等,数据存储在各个盘符之下,而Linux操作系统最顶层只有一个根目录root,所有文件都存储在这一个根目录之下。 Linux不像Wi
Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等领域。由于Java主要用于服务器端的开发,因此Java应用的部署环境有很多为Linux。 Windows操作系统的目录结构,是以盘符为单位,C盘、D盘、E盘等等,数据存储在各个盘符之下,而Linux操作系统最顶层只有一个根目录root,所有文件都存储在这一个根目录之下。 Linux不像Windows的图形操作界面,是通过命令的方式进行操作,常用命令有:
答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 - 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
讲道理,无论产品功能是否复杂,都有很大一部分程序员会写出一堆 if...else 来完成开发并顺利上线。这主要是原因没法预见当前的需求,发展是否长远、流量是否庞大、迭代是否迅速,所以在被催促上线的情况,不写 if...else 是不可能的!
自我介绍要说几个点:你是谁,你的优点是什么?这么多年你干了啥?在学校获得过什么奖?对哪些技术有深入研究?是否有高并发系统的设计?是否参与过什么大型项目?
上篇教程学院君给大家介绍了父子类之间的继承与方法重写,并且提到类作为参数类型声明时,子类实例可以转化为父类,但父类实例不能转化为子类,这是因为,子类必然包含了父类方法,反之则不一定。
来自骆昊的技术专栏 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象
整理了一些相关面试题,留作查阅之用。 ---- 1、面向对象特征:继承 封装 多态 2、方法重载:方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。 方法重写:有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。 3、Java数据类型 基本数据类型 8种 引用数据类型分为 数组,类,接口 4、Java 为每个原始类型提供了包装类型: - 原始类型: boolean,char,byte,short,int,long,
该文介绍了冒泡排序、选择排序、插入排序、归并排序和快速排序五种排序算法。这些算法在实现上采用了分治法的思想,将大问题分解为小问题来处理。在排序算法中,快速排序是最快的,归并排序是最慢的,而冒泡排序和插入排序在效率上相差不大。
常用五大包:java.long(longuage)该包下的类,在使用时是不需要导包的;java.util 工具包;java,io 文件读写;java.net 网络编程包;java.sql 操作数据库
类的构成由构造函数和初始化代码块、属性(字段)、函数(方法)、内部类(嵌套类)、对象声明五部分组成
本文主人翁是我星球里一位同学,周一线上顺丰面试遇到的问题,反馈面经时,只记得部分的。
一个简单的java程序如下: class Sakura { public static void main(String[] arges) { system.out.println("Hello World"); system.out.print("hahaha"); } } 1.主函数的出现可以保证一个类的独立运行的能力 2.在java程序中,pirnt与println的区别在于println输出一行之后是否再打印一个回车换行,而print则没有! 我们以后缀名为123.jav
参考:http://blog.csdn.net/jackfrued/article/details/44921941 说未经允许不转载,我只好参考了。 1.面向对象的特征有哪些方面? 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类称为父类(超累,基类);得到继承信息的类被称为子类(派生类)。继承让变换中的软件系统有了一定的延续性。同时继承也是封
4.替换原则 :里氏替换原则(Liskov Substiution Principle, LSP)定义以及主要思想:子类型必须能够替换掉它们的父类型、并出现在父类能够出现的任何地方。
答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
要想真正理解的话,可以参考这篇文章 :https://www.zhihu.com/question/31203609
面试题(判断题): java语言中凡是没有方法体的方法都是抽象方法。 不对,错误的。 Object类中就有很多方法都没有方法体,都是以“;”结尾的,但他们 都不是抽象方法,例如: public native int hashCode(); 这个方法底层调用了C++写的动态链接库程序。 前面修饰符列表中没有:abstract。有一个native。表示调用JVM本地程序。 代码演示:
分享一位球友的字节大数据基础架构部门的实习生面经,还是热乎的,嘿嘿! 📷 📷 一面 2.17 自我介绍 接口和抽象类的区别 了解过啥设计模式 单例模式是啥 工厂模式的作用,为什么要用工厂模式? 建造者模式的实现方式 在设计模式中你使用抽象类还是接口比较多 了解哪些 Java 锁 死锁的必要条件 MySQL 索引了解吗(那时候不会就直接说不会了) MySQL 事务隔离级别 说一下你用过的 Java 框架 (说了 Spring 的 ioc/aop 还没说 aop 就下一问了) 项目中如何使用 git 和 mav
官方的解释是,设计模式是:一套被反复使用,多数人知晓的,经过分类编目,代码设计经验的总结。说人话就是:软件开发人员在软件开发过程中面临的一般问题的解决方案。
使用 abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。
============================================================================= ============================================================================= 涉及的知识点有: 1:final关键字(掌握) 2:多态(掌握) 3:抽象类(掌握) 4:接口(掌握) ============================================================================= ============================================================================= 1:final关键字(掌握) (0)由于继承中方法有一个现象:方法重写。 所以,父类的功能,就会被子类给覆盖掉。 有些时候,我们不想让子类去覆盖掉父类的功能,只能调用但不能去覆盖修改。 这个时候,针对这种情况,Java就提供了一个关键字:final。 --------------------------------------- (1)final是最终的意思,常见的final可以修饰类、方法、变量。 (2)fianl的特点: A:final修饰的类,不能被继承。 编译报错:无法从最终Fu进行继承 应用:最底层的那个类可以用final修饰,这样该类就不能有儿子了。(即绝育) B:final修饰的方法,不能被重写(覆盖/复写)。 编译报错:Zi中的show()无法覆盖Fu中的show() C:final修饰的变量,是一个常量,只能被赋值一次。 编译报错:无法为最终变量num2分配值
抽象类是许多面向对象语言的核心特性,例如Java。也许是因为这个原因,他们往往被过度使用,实际上被误用了。在本文中,我们将使用一些模式和反模式的示例来说明何时使用抽象方法,何时不使用。
接口(英文:Interface),就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了,规范和具体实现的分离。
在抽象类中,除了有抽象方法,还有具体的方法(带{})实现。 如:动物各种其他行为可能有些区别,但是只要是动物,就应该会睡觉,所以可以定义成具体的方法。
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
2 . 测试 接口 + 抽象类 : HumanStudent 继承了抽象类 , 实现类接口 ;
在之前的2篇博文漫谈模式之单例模式(多种实现方式的思考)和漫谈模式之单例模式(破坏和防护的思考),已经讲解了单例的多种实现方式以及单例在反射、序列化反序列化以及克隆场景下的破坏和防护思考。本文也迎来了漫谈单例模式的最后篇章,如何写一个通用的单例?
当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!
定义一个类时常常需要定义一些成员方法用于描述类的行为特征,但有时这些方法的实现方式是无法确定的。例如上期定义的 Animal类中的 shout()方法用于描述动物的叫声,但是不同的动物叫声也不相同,因此在 shout()方法中无法准确描述动物的叫声。
6. 在继承中new和override相同点和区别?看下面的代码,有一个基类A,B1和B2都继承自A,并且使用不同的方式改变了父类方法Print()的行为。测试代码输出什么?为什么?
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有
🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅!
在面试中,Dubbo 这个 RPC 框架的代表作一直是热点,而且面试官也会根据经验从各种角度提问,并且像剥洋葱一样层层深入底层原理,因此单纯看看常规的面试题是远远不足的,最好还是能够自己深入阅读源码。另一方面,程序猿在平时的工作中又很少接触到源码,而且自己硬啃源码也是困难重重。
多个类中存在相同属性和行为时, 将这些内容抽取到单独的一个类中, 那么这多个类就无需再定义这些属性和行为了, 只要继承那个类即可. 这个关系, 就叫继承.
解题思路: 要回答好这个问题,首先要了解面试官询问的意图,而不是上来就像记流水账一样回答,这样给面试官的印象分就减少了。
上面的例子,其实我们可以发现不同的策略其实是可以互换的,甚至策略细节之间可以混搭,那么很多时候我们为了方便拓展,方便替换策略,对调用方屏蔽不同的策略细节,就可以使用策略模式。倘若所有的策略全部写在一个类里面,可以是可以,这样维护代码会越来越复杂,维护只会越来越困难,里面会充斥着各种if-else,算法如果日益复杂,动一发而牵全身,那就只剩下提桶跑路了。
85、Java 中 java.util.Date 与 java.sql.Date 有什么区别?
HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。
父类要体现所有子类的共同特征,在设计某些方法(行为特征或功能)时,我们发现父类中无法给出合理的具体实现,而应该交由子类来实现,那么这样的方法就应该设计为抽象方法,而包含抽象方法的类就必须为抽象类。
领取专属 10元无门槛券
手把手带您无忧上云