21xrx.com
2025-03-30 14:27:13 Sunday
文章检索 我的文章 写文章
Java面试常见问题及解决方案
2023-06-16 10:00:28 深夜i     9     0
封装 继承 多态

在Java开发者的职业生涯中,面试是必经之路。面试中常常会涉及到一些常见问题,这些问题需要Java开发者掌握才能顺利通过面试。下面我们来看看Java面试中常见的问题及解决方案。

1. 面向对象的三个基本特征是什么?

答:封装、继承、多态。

代码案例:

// 封装
public class User {
  private String name;
  private int age;
  public String getName()
    return name;
  
  public void setName(String name)
    this.name = name;
  
  public int getAge()
    return age;
  
  public void setAge(int age)
    this.age = age;
  
}
// 继承
public class Animal {
  protected String name;
  public Animal(String name)
    this.name = name;
  
  
  public void eat() {
    System.out.println(name + "正在吃东西...");
  }
}
public class Dog extends Animal {
  public Dog(String name) {
    super(name);
  }
  
  public void bark() {
    System.out.println(name + "正在叫...");
  }
}
// 多态
public class Shape {
  public void draw() {
    System.out.println("画图形");
  }
}
public class Rectangle extends Shape {
  public void draw() {
    System.out.println("画矩形");
  }
}
public class Circle extends Shape {
  public void draw() {
    System.out.println("画圆形");
  }
}
public class Main {
  public static void main(String[] args) {
    Shape s1 = new Circle();
    Shape s2 = new Rectangle();
    s1.draw();
    s2.draw();
  }
}

2. 接口和抽象类有什么区别?

答:接口中所有的方法都是抽象的,而抽象类中可以有非抽象的方法。

代码案例:

// 接口
public interface MyInterface {
  void abstractMethod();
}
// 抽象类
public abstract class MyAbstractClass {
  public void nonAbstractMethod() {
    System.out.println("这是一个非抽象方法");
  }
  public abstract void abstractMethod();
}
// 实现接口
public class MyClass implements MyInterface {
  @Override
  public void abstractMethod() {
    System.out.println("实现了接口中的抽象方法");
  }
}
// 继承抽象类
public class MySubClass extends MyAbstractClass {
  @Override
  public void abstractMethod() {
    System.out.println("继承抽象类,并实现了其中的抽象方法");
  }
}

关键词:接口、抽象类、实现、继承

3. 什么是多线程?

答:多线程就是在同一程序中,同时执行多个线程完成不同的任务。

代码案例:

public class MyThread extends Thread {
  public void run() {
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + "运行,i = " + i);
    }
  }
}
public class Main {
  public static void main(String[] args) {
    MyThread t1 = new MyThread();
    MyThread t2 = new MyThread();
    t1.start();
    t2.start();
  }
}

关键词:线程、执行、任务

以上就是Java面试中常见问题及解决方案,希望能够帮助到Java开发者。

  
  

评论区