个人java小结

     目今面临面试,而在面试中基础知识是相当重要的,故在此一边复习,一边总结一下下列个人认为重要的基础知识。本人现在面试了两场面试,第一场面试直接被技术长官刷下来,因为基础知识一点都不牢固,比如hashmap ,hashtable,set,这些容器的使用,第二场,显得有点似是而非,不清晰,当要我写一个单例模式的时候,只写出了一部分,忘了 ,我记得现在我去面试的时候,说的最多的一句话,就是我忘记,没有对这方面深入研究,好像有这么回事,事事显得很外行,故从今日起重新捧起大块头,进行总结,并就有关的知识点进行编写代码,下面是本人阅读的时候的一些零散的记录,另外本人复习的书本为think in java

1.包访问权限,相同包下的类之间具有相互访问的权限,而不同包之间则具有不同的权限
2.只要两个 .java文件在同一个目录中,那么这两个.java文件就享有相互访问的权限
3.package关键字,比如  package net.htll.abc  那么会在classpath的搜索的一个路径下创建net目录,让后net目录下创建htll目录,最后创建abc目录
proctected   保中其他类可以访问protected成员 另外 派生类也可以访问该成员
java代码的重用机制:一再新类中创建原有类的对象,使用原有类的方法,继承一个类,
每一个非基本类型的对象都有一个toString方法,当需要把一个对象输出的时候,就会调用其toString方法,变成一个字符对象
初始化引用的四种方式或者地方:1.在定义的地方new一下,在构造函数里面,在要使用的时候,赋另外一个应用

public class a{
 //会有默认构造函数
}
public class b{
private a ab;
 
public String toString(){
if(ab==null)//在要使用的时候初始化,俗称,惰性初始化
ab=new a();

}
-----
}
所有java类都继承自根类object
可以在每一个类中设置main方法,子类通过下列方法调用 父类的main法法.main(args)
子类同过super关键调用父类的某个方法
对基类对象的的正确初始化,java会在导出类的构造器中插入对基类构造器的调用。
public class a{
public a(){
Syste--("a");
}
}
public class b extends a{
public b (){S---("b");}

}
则调用创建b的对象时 ,不仅仅调用b的构造器,而且先于b的构造器调用a的构造器
如果父类构造器有参数的化可以用super(参数)来调用父类构造器,否则的话会发生错误,因为如果有有参数的构造器,那么无参构造器会消失

代理 是在要访问 与要访问的实际对象中间加了一个中间层,比如开车子,控制轮胎的转动时发动机的事情,但是,我们却可以通过操作其他的东西来控制轮子的转动,不知道解释对不对,
编译器会强制初始化基类,但是没有强制要求我们初始化对象成员,
try{}
finally{}做一些额外的处理工作,如清理,另外如System.gc()调用垃圾回收器,并不一定有效,垃圾回收器,是面向整个jvm平台的,而不是某一个具体的对象的
在java中子类的重名方法并不会覆盖父类的重名方法,派生类对象依然可以调用父类中的重名方法,这点与C++是不相同的使用标签@override则进行覆盖
has a 用组合关系来表达(含有,比如车子有轮胎),而is a则继承(特殊化,比如车子是交通工具的特殊化),这貌似软件工程里面也有,
向上转型:即把子类转化为一个派生类,因为派生类具有所有基类的成员以及方法,向上转型是从一个较为特殊的类转为一个较为通用的类,因而是安全的,不过向上转型,会丢失派生类的一些方法和属性,毕竟要变成和子类相同的对象了么
一个static final只占据一个恒定不能改变的存储空间,一直到程序的结束
对于final常量必须是基本数据类型,而且要在开始的时候进行初始化


多态,多态通过国分离做什么和怎么做,从另一个角度将借口和实现分离开来。多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要她们都是从同一基类导出而来的,这种区别是根据方法行为的不同而表现出来的,
将一个方法调用同一个方法主题关联起来叫做绑定,在程序执行前进行绑定,称之为前期绑定,后期绑定是指在运行时根据对象的类型进行绑定
java中除了static方法和final方法之外,其他所有方法都是后期绑定
final方法是不可以被覆盖的方法,而且可以关闭动态绑定,
由于后期绑定,如果有多个类继承自基类,那么将他向上转型为基类,然后我们只要对基类的引用进行操作就行了,当然操作的只能是基类中拥有的方法,但是调用的时候会调用子类中覆盖的方法。
 多态是让程序员 将改变的事物与未变的事物分离开来 我们可以把基类的方法增加,或者把子类改变了,或者增加子类了,但是这并不改变多态的运用,也就是我们可以通过对基类方法的操作,而实际操作到了子类这种性质不受代码增加的影响。
另外,就是由于private 方法是final方法,不可以再被重写,如果在派生类中又覆盖了,则不会实现多态效果,会被认为是完全新的方法
任何域访问操作都由编译器解析,所以不是多态的
如果某个方法是静态的,那么它就不具有多态性
对对象的清理,应该先清理自身,然后调用类中对象的清理,然后再调用父类的清理方法,这样一级一级的下来,这个确实挺像大房子,与掀开房子,搭房子的时候,从基部搭建起来,掀开房子的时候,则从上面的起来,这是因为彼此之间有依赖关系,不这样的坐的话就会有危险

如果一个对象为几个对象所共享,那么需要一个引用计数,来进行清理,只有在引用该对象的对象为0时,我们才能够将它进行清理 
如果在构造器中进行进行多态调用,则会由于所操作的成员没有初始化而带来一些错误



静态方法是与类而不是与单个对象相关联的继承的那个类的构造方法,然后是这个类中对象的从上到下的构造方法,最后是自己这个类的构造方法


上面的多态是把要做什么,和怎么做进行分离,现在要学习的就是把接口与实现分离的更加结构化的方法。
抽象类:不能有任何对象,我们仅希望这作为一个同样接口,大家都在此基础上进行一些特殊化,抽象类不一定要包含抽象方法,
抽象方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值