这篇文章主要是对面向对象的一些知识点的补充
1.抽象类和接口
抽象类使用场景:被子类继承然后实现里面的方法,对象知道了有哪些方法,不仅可以定义方法还可以定义成员变量。
接口:定义一些行为,然后让需要他的类去实现。比如 fly这个方法可以在在多个类使用,这些类相互之间可以没有任何关联。
2.拷贝
在java中和其他语言是一样的拷贝都存在深度复制和浅复制。
浅复制:就是基本类型的拷贝,但是引用类型还是指向堆内存中同一块数据。
深复制:不但基本类型是拷贝,引用类型也在对象中新建了一个对象。
那么使用对象的序列换和反序列化就可以很好的实现对象之间的深复制。
3.关键字static
主要要注意的是static静态块,在加载类的时候都会执行,还有就是final和static一起使用定义一个常量。
4.内部类
内部类就是把类当成外部类的一个成员变量,但是可以访问外部类的资源。
5.多继承
实现多继承的两种方式:接口,内部类。因为内部类是单独的一个类可以自己单独实现继承,实例如下:
public class Father {
public int strong(){
return 9;
}
}
public class Mother {
public int kind(){
return 8;
}
}
public class Son {
/**
* 内部类继承Father类
*/
class Father_1 extends Father{
public int strong(){
return super.strong() + 1;
}
}
class Mother_1 extends Mother{
public int kind(){
return super.kind() - 2;
}
}
public int getStrong(){
return new Father_1().strong();
}
public int getKind(){
return new Mother_1().kind();
}
}
6:内部匿名类
http://blog.csdn.net/chenssy/article/details/13170015
7:代码块
代码块有静态代码块,构造代码块。这里这里主要介绍下。再有继承的情况下代码块和构造函数的一个执行顺序这是面试或者笔试经常会考的地方。
在有继承的情况下首先实例化对象调用的顺序如下:
父类静态代码块
子类静态代码块
父类构造块
父类构造函数
子类构造块
子类构造函数