抽象类

java面试题大全-基础方面

我只是一个虾纸丫 提交于 2020-01-19 03:53:23
Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答

Python中的接口类和抽象类

与世无争的帅哥 提交于 2020-01-19 03:52:30
Python中的接口和协议 Python语言中没有interface关键词,而且除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性)。 接口类: 面向对象中的继承有两种用途: 1)可以通过继承做到代码重用,并完成扩展; 2)接口继承 所谓的接口继承就是定义一个接口类Interface,接口类中定义了一些接口(就是函数,但这些函数都是没有具体的实现),子类继承接口类,并且实现接口中的功能。 接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由类B去实现其中的某个功能或全部功能。在python中接口由抽象类和抽象方法去实现,接口是不能被实例化的,只能被别的类继承去实现相应的功能。 抽象类 抽象类只能被继承,不能被实例化。如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性。 比如我们有香蕉的类,有苹果的类,有桃子的类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉,要么是吃一个具体的桃子。。。。。。你永远无法吃到一个叫做水果的东西。 python中,抽象类和接口类没有明确的界限,若是类中所有的方法都没有实现,则认为是一个接口,若是部分方法实现,则认为是一个抽象类

Java编程思想学习笔记(9)

◇◆丶佛笑我妖孽 提交于 2020-01-19 03:49:55
Java编程思想学习笔记(9) 抽象类与抽象方法 首先先看例子,之前的一系列乐器的例子,把基类Instrument声明为抽象类。 UML图: abstract class Instrument { private int i; // Storage allocated for each //抽象方法,不能有“{}” public abstract void play(Note n); public String what() { return "Instrument"; } public abstract void adjust(); } public class Brass extends Instrument{ public void play(Note n) { print("Brass.play() " + n); } public void adjust() { print("Brass.adjust()"); } } public class Percussion extends Instrument{ public void play(Note n) { print("Percussion.play() " + n); } public String what() { return "Percussion"; } public void adjust() {} }

接口 抽象类 普通类 对象

久未见 提交于 2020-01-19 03:46:19
动物:公共标准 接口(interface) (特殊的类:只有 抽象方法 + 全局变量) 哺乳动物:子标准 接口的继承 非哺乳动物 :子标准 接口的继承(extends A,B)(接口的多继承) (interface C extends A,B)(接口的多继承) 区别于 类 实现 接口 (class D implements A,B) 人 :不是具体的事物标准 抽象类 狗·:不是具体的事物标准 抽象类 猫 :不是具体的事物标准 抽象类 1.(拥有抽象方法的类,一定是抽象类(抽象类必须由abstract修饰),其他与普通方法相同) 2.若抽象类的抽象方法没有 方法体,则 不用加“{}”; 例: public abstract void print(); 3.抽象类不能直接实例化对象 4.抽象类必须由子类继承(extends) 5.依据对象的向上转型概念,通过抽象类的子类完成抽象类的实例化对象操作。 抽象类相关限制: 1.抽象类里边会存在一些属性,那么在抽象类一定要存在构造方法,目的是为属性初始化。在子类对象初始化时,依然满足先执行父类构造,在调用子类构造的情况。 2.抽象类不能用final定义,因为抽象类必须有子类,而final定义的类不能有子类; 3.抽象类中可以没有任何抽象方法,但是只要是抽象类,就不能直接使用关键字new实例化对象。 4.抽象类中依然可以定义内部的抽象类

第五周学习总结-20175218

僤鯓⒐⒋嵵緔 提交于 2020-01-18 19:56:29
20175218 2016-2017-2 《Java程序设计》第五周学习总结 教材学习内容总结 -第六章主要讲了Java中的接口与实现。因为之前的第五章已经学习过了子类,告诉了我们方法重写、对象的上转型对象和多态,主要强调面向抽象编程的思想。而第六章则让我们学习另一种重要的数据类型——接口,还讲了和接口有关的多态。 -在接口中,接口体只能有常量和abstract方法。且接口变量中只能存放实现该接口的类的实例的引用,当接口变量中存放了实现接口的类的对象的引用后,接口变量就可以调用类实现的接口方法,称作接口回调。 -和子类体现的多态相似,接口产生的多态是指不同的类在实现同一个接口时可能具有不同的实现方式。 -除了学习教材上的内容,我还把第一周测试的题目整理总结,博客链接: 第一周测试总结分析 -第六章教材调试代码码云链接: 第六章代码 教材学习中的问题和解决过程 问题1:不清楚接口中能否声明变量 问题1解决方案:通过百度查询后得知,不能声明,而且还了解了更多。 接口就是提供一种统一的”协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。抽象类是不“完全”的类,相当于是接口和具体类的一个中间层。即满足接口的抽象,也满足具体的实现。 如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系

学习java的第10天

对着背影说爱祢 提交于 2020-01-18 07:05:03
抽象类 什么是抽象类? 针对一个事物,如果这个事物并不是具体事物,而是概括性的(需要抽象修饰这个类),将当前这个类定义为抽象类 格式: abstract class 类名{} 什么是抽象方法?只是给定义一个方法声明,没有方法主题{} 权限修饰符 返回值类型 方法名(); 抽象类的特点: 抽象类不能实例化(不能创建对象) 1.如果一个类中有抽象方法,那么这个类一定是抽象类 2.抽象类中不一定都是抽象方法,也可以是非抽象的. 3.子类是抽象类的情况 一般是没有意义的 父类已经不能实例化了 应该才用的父类引用执行子类对象 子类都是具体类的情况: 创建对象需要通过子类在实例化 接口 接口的定义:体现的一种扩展性(显示世界事物额外的行为) 接口定义的格式: interfac 接口名{} 定义接口名和定义类名的规则是一样的,单个单词第一个字母大写 多个单词 每个单词首字母大写 接口中的方法是抽象方法 注意事项: 1.接口不能实例化 2.接口的子实现类和接口的关系 implements 实现关系 接口的子实现类是抽象类的情况:子类是抽象的; 无法实例化 接口子实现类是具体类的情况 接口的子实现类都是具体类 如何实例化 接口多态实例化 接口名 对象名 =new 子实现类类名();实例化 通过子类实例化 实际开发中 定义接口: interface 接口名{} 字实现类的命名 class 类名

单例模式

时间秒杀一切 提交于 2020-01-18 02:10:59
设计原则 1. 单一职责原则 要求一个接口或者类只有一个原因引起变化,也就是一个接口和类只有一个职责。 2. 里氏替换原则 只要父类能出现的地方子类都可以出现,而且替换为子类也不会产生任何错误或者异常。 3. 依赖倒置原则 Dependence Inversion Princple 实现类间不发生直接的依赖关系,其依赖关系通过接口或抽象类产生。 接口或抽象类不依赖于实现类。 实现类依赖接口或者抽象类。 即——“面向接口编程” 4. 接口隔离原则 接口尽量细化,接口中的方法尽量少(但是不能违反单一职责原则)。 5. 迪米特法则(最少知识原则) 一个类应该对自己需要耦合或调用的类知道的最少,即让类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,多使用访问权限。 出现在成员变量、方法的输入输出参数中的类称为朋友类,而出现在方法内部的不属于朋友类。 一个类要保证只和自己的朋友类产生交流。 6. 开闭原则 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 设计模式 单例模式 定义 定义:Ensure a class has only one instance, and provide a global point of access to it. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 要求一个类只能生成一个对象

接口 and 抽象类

蓝咒 提交于 2020-01-18 01:21:43
java面试分享-------接口和抽象类的含义和区别 先来看定义: 接口 是对行为的抽象,它是抽象方法的集合,利用接口可以达到API定义和实现分离的目的。接口,不能实例化;不能包含任何非常量成员,任何feld都是隐含着public static final的意义;同时,没有非静态方法实现,也就是说要么是抽象方法,要么是静态方法。 抽象类 是不能实例化的类,用abstract关键字修饰class,其目的主要是代码重用。除了不能实例化,形式上和一般的Java类并没有太大区别,可以有一个或者多个抽象方法,也可以没有抽象方法。抽象类大多用于抽取相关Java类的共用方法实现或者是共同成员变量,然后通过继承的方式达到代码复用的目的。 具体来说,接口就是 行为的抽象,就是你能做什么的抽象,而抽象类是你是由什么做的。 比如 ArrayList ,源码里面是这样的: public class ArrayList < E > extends AbstractList < E > implements List < E > , RandomAccess , Cloneable , java . io . Serializable 其中,继承了一个抽象类和四个接口。 抽象类要怎么写呢?来看看 ArrayList 的继承的抽象类 AbstractList : public abstract class

抽象类与接口

可紊 提交于 2020-01-17 23:43:29
抽象类与接口 初识抽象类 抽象方法 抽象类的优势 初识接口 接口的特性 面向对象设计原则 初识抽象类 什么是抽象类? 答:1.抽象类不能被实例化。 2.如果子类不是抽象类,则必须重写抽象类中的全部抽象方法。 3.abstract修饰符不能final修饰符连在一起使用。 4.abstract修饰的抽象方法没有方法体。(子类必须写方法体) 5.private关键字不能用来修饰抽象法方法。 抽象类的定义格式: public abstract class 类名称 { 修饰符 abstract 返回类型 方法名 ( ) ; 修饰符 返回类型 方法名 ( ) { 方法体 } } 抽象类与普通类的区别 1.抽象类需要用修饰符abstract修饰,普通类不需要。 2.普通类可以实例化,抽象类不能被实例化。 抽象方法 在java中,一个类的方法被abstract关键字修饰时,该方法称为抽象方法,抽象方法所在的类必须定义为抽象类。 当一个方法被定义为抽象方法后,意味着该方法不会有具体的实现,而在抽象类的子类中通过方法重写进行实现。 语法格式:[访问修饰符] abstract <返回类型> <方法名> ([参数列表]); 抽象方法与普通方法的区别 1.抽象方法用abstract修饰,普通方法不用。 2.普通方法有方法体,抽象方法没有方法体。 抽象类不一定是抽象方法,但抽象方法一定是抽象类。 抽象类的优势

细节!重点!易错点!--面试java基础篇(一)

萝らか妹 提交于 2020-01-17 20:45:23
今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正。 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的。 2.任何静态代码块都会在main方法之前执行。 3.java程序的初始化顺序:原则:静态优先于非静态,且只初始化一次;父类优先于子类;按照成员定义顺序初始化。 例顺序:父类静态变量,父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块,子类构造函数。 4.java中一个文件可以定义多个类,但只能有一个类被public修饰,且访问的类名与文件名必须相同,每一个类都会生成一个字节码文件。 5.构造函数的特点:1)名字必须与类名相同;2)构造函数不能被继承,不能被覆盖,但是可以被重载;3)子类可以通过super关键字来显示的调用父类的构造函数,但当父类没有提供无参的构造函数时,子类的构造函数必须显示的调用父类的构造函数。 6.java中的接口常量默认使用public static final修饰。 7.java在处理基本数据类型时,都是按照值传递,其他的都是按照引用传递。 8.clone方法,深复制和浅复制的区别:深复制把复制的对象所引用的对象都复制了一遍;浅赋值仅仅赋值所考虑的对象,不复制他所引用的对象。 9.三种获取类的方法:1)class