抽象类和接口的区别 抽象类和接口在设计层面的区别主要体现在:接口是对动作的抽象,抽象类是对根源.类的抽象.抽象类表示的是,这个对象是什么,接口表示的是,这个对象可以做什么. 比如,男人.女人是人,人是男人女人的抽象类.人可以吃东西,动物也可以吃东西,人还有各种行为,吃东西就可以定义为一种接口. 语法上具体的异同如下: 1.不管是抽象类还是接口都不能实例化. 2.抽象类要被子类继承,接口要被类实现. 3.抽象类中可以有具体的方法实现,接口中只能做方法说明. 4.接口里定义的变量只能是公共的静态的常…
1.抽象类和接口的区别 抽象类里面可以有非抽象的方法(可以没有抽象方法),接口里只能有抽象方法. 抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号.  抽象类(abstract class): a.抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类. b.抽象类的主要特征在于它包含抽象成员(abstract member),抽象成员是不具有实现的一个方法或属性,其作用是强制所有派生类提供实现. c.由于抽象成员应当是要被重写(override)的,因此这类成员…
抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 public class test1 { public static void main(String[] args) { } } class Animal { String name; int age; //动物会叫 public void cry() { System.out.println("不知道怎么叫"); //问题是这个方法…
面向对象的特征 封装.继承和多态 https://blog.csdn.net/jianyuerensheng/article/details/51602015 封装: 定义:封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型. 优点:1.保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装. 2.方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==>方法封装. 3.良好的封装可以降低程序的耦…
http://www.cnblogs.com/logsharing/p/8448446.html 转载的这篇文章,很有意思,说的也很全面,学习下,防丢失,备份记录下 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么. 当你在面试中被问到这个问…
在一个表达式中可能包含多个有不同运算符连接起来的.具有不同数据类型的数据对象:由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性.唯一性. 优先级 1.优先级与求值顺序无关.如a+b && bc,虽然优先级最高,但这个表达式求值顺序是从左到右. 2.优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 3.相同优先级中,按结合性进行结合.大多数运算符结合性是…
这是个设计相关的问题,它考察的是面试者对现有系统和一些普遍存在但看起来不合理的事物的看法.回答这些问题的时候,你要说明为什么把这些方法放在Object类里是有意义的,还有不把它放在Thread类里的原因.一个很明显的原因是JAVA提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得.如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了.如果wait()方法定义在Thread类中,线程正在等待的是哪个锁就不明显了.简单的说,由于wait,notify和notifyAll都是锁…
 什么是序列化和反序列化 序列化:把堆内存中的java对象数据,通过某种方式把对象存储到磁盘文件或者传递给其他网络节点.这个过程称为序列化.简单来说呢,就是将对象转换成二进流的过程. 反序列化:把磁盘文件或网络节点上的对象数据恢复成java模型的过程,也就是将序列化过程中产生的二进制串转化为数据结构或者对象的过程. 为什么要序列化 1.在分布式系统或者需要远程调用,此时就需要把对象在网络上传输,需要把对象转为二进制形式,需要共享的JavaBean对象,都需要做序列化. 2.服务器钝化:如果服务器…
 hashCode和equals方法的区别和联系  两个方法的定义 equals(Object obj)方法用来判断两个对象是否"相同",如果"相同"则返回true,否则返回false. hashCode()方法返回一个int数,在Object类中的默认实现是"将该对象的内部地址转换成一个整数返回.  官方给出的一些说明: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals…
==: ==比较的是变量内存中存放的对象的内存地址,用来判断两个对象地址是否相同,比较的是否是同一个对象. 1.两边的操作数必须是同一类型,不然编译不通过. 2.如果是基本数据类型比较,值相等则为true.因为基本类型不存在引用的概念,都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间. equals: equals比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有的对象.如果没有对equals方法重写,调用的就是Object类…