每日一道面试题

262 阅读2分钟
本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

java基础

本文以java基础的各种面试问题进行总结;

  1. Java中什么是对象?对象的三个特征是什么?

       java中的对象,是一种开发者的思维,是开发人员针对内存中的一块区域给他标记了一个地址,
       广泛的说对象可以做任何事情;总结来说,对象中包含属性、行为、地址
       三个特征:
             封装:是指把对象中的属性设置为私有的,只暴露get/set方法进行对属性设定或者取值
             继承:一个类可以从另一个类中继承属性和方法。被继承的类称为父类或超类,继承的类称为子类或
                 派生类。子类可以继承父类的公有和受保护的属性和方法,但不能继承私有的属性和方法。
                 子类可以通过super关键字来调用父类的方法和属性,也可以在自己的类中定义和父类同名的
                 方法和属性,从而实现方法的重写和属性的隐藏。继承的优点是可以避免重复编写相似的代码,
                 提高代码的复用性和可维护性。但是,继承也存在一些缺点,比如增加代码的耦合性,可能会导
                 致子类和父类之间的紧密耦合,从而降低代码的灵活性和可扩展性。因此,在使用继承时需要慎
                 重考虑,根据具体情况选择合适的实现方式
                   class SubClass extends SuperClass {
                   // 子类的代码
                   }
             多态:是指同一类型的的对象在不桶情况下的不同的表现方式
                     1.编译时多态
                           编译时多态是指在编译时就能确定调用哪个方法,也称为静态多态。
                           Java中实现编译时多态的方式是方法重载,
                           即在同一个类中定义多个方法名相同但参数列表不同的方法。
                           编译器在编译时根据参数列表的类型和数量来决定调用哪个方法。
    
                      2.运行时多态
                            运行时多态是指在程序运行时根据实际情况确定调用哪个方法,也称为动态多态。
                            Java中实现运行时多态的方式是方法重写,即子类可以重写父类的方法,当调用方
                            法时,实际执行的是子类的方法。运行时多态的实现需要用到Java中的关键字
                            “override”和“super”,override(注解)表示重写,super()表示调用父类的方法
                           
                           class Animal {
                               public void makeSound() {
                                   System.out.println("Animal is making sound");
                               }
                           }
    
                           class Cat extends Animal {
                               public void makeSound() {
                                   System.out.println("Cat is meowing");
                               }
                           }
    
                           class Dog extends Animal {
                               public void makeSound() {
                                   System.out.println("Dog is barking");
                               }
                           }