|
2.1面向对象和面向过程之间的区别
面向对象是当今软件开发的一种主流方法之一,它是吧数据以及对数据的操作方法放到一起,作为一种相互依存的整体,即对象。对于同类对象抽象出其共性,即类,类中的大多数数据,只能被本类中的方法进行处理。
而面向过程就是一事件为中心的开发方法,自顶向下顺序执行。
他们的区别大致如下
1)出发点不同
2)层次逻辑关系不同
3)数据处理方式和控制程序方式不同
4)分析设计和编码转换方式不同
2.2面向对象特征和优点
抽象,继承,封装,多态
优点:较高的开发效率,保证软件的高可维护性
2.3组合和继承的区别
继承是一对一的,即is-a关系
组合表示一种中含有多个,即has-a关系
在代码中继承不要用太多,否则会破坏代码的可维护性,让代码变得很臃肿。
2.4多态的实现机制是什么
1方法的重载
2方法的覆盖
class Base{
public Base() {
g();
}
public void f() {
System.out.println("Base f");
}
public void g() {
System.out.println("Base g");
}
}
class David extends Base{
public void f() {
System.out.println("David f");
}
public void g() {
System.out.println("David g");
}
}
public class Testbase {
public static void main(String[] args) {
// TODO Auto-generated method stub
Base b=new David();
b.f();
b.g();
}
}
David g
David f
David g
这里看到,输出的第一段是调用的Base类构造函数,但是在调用构造函数的时候要使用g方法,然而g方法已经被覆盖了,所以,连同下面的方法都要调用子类的方法。
2.5如何获取父类的类名
声明一个类之后,System....("this.getClass().getName()")
但是如果声明的是子类,再输出这种形式,那么输出的是子类的名字,而不是父类的名字。
那么为什么没有输出父类的名字呢,因为所有的类都继承于object类,而getclass在object类中运行时时返回此时运行的方法,所以会输出子类。
2.6super的注意事项
super,当子类要显示调用父类构造函数时,要放在最前面 |