面试常见问题 – xuan's blog



面试常见问题 – xuan's blog

Java 面向对象的基本特性?

  • 抽象:将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。
  • 继承:从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到信息的类被称为子类(派生类)。
  • 封装:把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
  • 多态:允许不同子类的对象对同一消息做出不同的响应。

 

抽象类与接口的区别?

  • 抽象类需被子类继承;接口需被类实现
  • 抽象类中可以有普通变量;而接口中只能有静态常量
  • 抽象类中方法访问权限不限;接口中的方法都为 public;
  • 抽象类中可以只方法声明,也可以做方法实现;接口中只能有方法声明(JDK8 中可以有静态方法和默认方法)
  • 抽象类只能单基础;接口可以多继承接口,也可以被实现多个接口

 

为什么内部类访问的局部变量必须被 final 修饰?

因为生命周期不同。局部变量在方法结束后就会被销毁,但内部类对象并不一定,这样就会导致内部类引用了一个不存在的变量。

所以编译器会在内部类中生成一个局部变量的拷贝,这个拷贝的生命周期和内部类对象相同,就不会出现上述问题。

但这样就导致了其中一个变量被修改,两个变量值可能不同的问题。为了解决这个问题,编译器就要求局部变量需要被 final 修饰,以保证两个变量值相同。


Read full article from 面试常见问题 – xuan's blog


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts