java程序员面试基础之面向对象技术

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 22:08   553   0

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,当子类要显示调用父类构造函数时,要放在最前面

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP