首页 > 编程语言 >Java基础知识点-常见面试题(持续更新...)

Java基础知识点-常见面试题(持续更新...)

时间:2024-05-25 22:35:20浏览次数:24  
标签:知识点 面试题 Java String 对象 Car Person 方法 public

文章目录


前言

Java 基础-常见面试题(Java Fundamentals - Common Interview Questions)

在学习Java编程的过程中,我整理了一些常见的Java基础面试题。这些题目帮助我回顾了学习过程中的关键知识点。

面向对象的三大特征

1. 封装

在 Java 中,封装主要是通过使用类的成员变量(属性)和成员方法(行为)来实现。。一般来说,我们会设置属性为私有(private),这样外部就无法直接访问和修改我的属性。然后,我们会提供一些公共的方法来获取(getter)和设置(setter)这些属性,即访问器方法。

例如:

public class Student {
    // 私有属性
    private String name;
    private int age;

    // 公共的getter方法
    public String getName() {
        return name;
    }

    // 公共的setter方法
    public void setName(String name) {
        this.name = name;
    }

    // 公共的getter方法
    public int getAge() {
        return age;
    }

    // 公共的setter方法  
    public void setAge(int age) {
        if (age >= 0 && age <= 100) {
            this.age = age;
        } else {
            System.out.println("Invalid age");
        }
    }
}

2. 继承

我们创建一个类(称为子类或派生类),该类继承另一个类(称为父类或基类)的属性和方法。通过继承呢,子类可以重用父类的代码,从而避免重复编写相同的代码。这样可以提高代码的可重用性,促进代码的组织以及管理。

在 Java 中,可以使用extends关键字来实现继承。子类可以继承父类的所有非私有成员(属性、方法),并且子类也可以添加自己的成员,或重写父类方法。

例如:

// 父类  
class Animal {
    private String name;

    public Animal(String name) {
        this.name = name;
    }

    public void makeSound() {
        System.out.println("The animal makes a sound");
    }

    public String getName() {
        return name;
    }
}

// 子类继承自父类  
class Dog extends Animal {
  
    public Dog(String name) {
        // 调用父类的构造方法  
        super(name);
    }

    // 重写父类的方法  
    @Override
    public void makeSound() {
        System.out.println("The dog barks");
    }

    // 子类特有的方法  
    public void fetchStick() {
        System.out.println("The dog fetches a stick");
    }
}

// 主类,测试继承  
public class InheritanceDemo {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy");
        dog.makeSound(); // 输出: The dog barks  
        System.out.println(dog.getName()); // 输出: Buddy  
        dog.fetchStick(); // 输出: The dog fetches a stick  
    }
}

3. 多态

指的是同一操作作用于不同的对象,可以产生不同的执行结果。

多态性可以通过两种方式体现

  • 编译时多态性:方法的重载。在同一个类中,可以声明多个同名但参数个数、类型或顺序不同的方法。在编译时期,根据参数的不同来判定采用的方法。
  • 运行时多态性:方法的重写和父类引用指向子类对象。派生类可以声明与从基类继承的方法签名一致的方法,即重写方法。在程序运行时,根据运行时对象的类型来调用相应类实现(重写)的方法。

例如:

// 基类  
class Shape {
    void draw() {
        System.out.println("Drawing a generic shape");
    }
}

// 子类1  
class Circle extends Shape {
  @Override
    void draw() {
        System.out.println("Drawing a circle");
    }
}

// 子类2  
class Rectangle extends Shape {
  @Override
    void draw() {
        System.out.println("Drawing a rectangle");
    }
}

// 主类,测试多态  
public class PolymorphismDemo {
    public static void main(String[] args) {
        // 创建子类对象  
        Shape circle = new Circle();
        Shape rectangle = new Rectangle();

        // 调用draw方法,展示多态性  
        circle.draw(); // 输出: Drawing a circle  
        rectangle.draw(); // 输出: Drawing a rectangle  

        // 用数组来存储不同形状的对象,并调用它们的draw方法  
        Shape[] shapes = new Shape[2];
        shapes[0] = new Circle();
        shapes[1] = new Rectangle();

        for (Shape shape: shapes) {
            shape.draw(); // 分输出: Drawing a circle 和 Drawing a rectangle  
        }
    }
}

抽象类和接口有什么相同点和区别?

标签:知识点,面试题,Java,String,对象,Car,Person,方法,public
From: https://blog.csdn.net/m0_62537698/article/details/139203592

相关文章

  • linux文件权限常用知识点,基于Linux(openEuler、CentOS8)
    目录知识点常用实例知识点真实环境文件显示解读常用实例文件所有者chown-Rnginx:nginx/home/source目录权限(R选填必须大写<遍历子文件夹及文件>)chmod-R755/home/sourcechmod-R777/home/source......
  • HashMap常见知识点(持续更新...)
    文章目录前言HashMap的底层数据结构解决Hash冲突的方法有哪些,HashMap用哪种为什么Hash冲突时,先用链表,再转为红黑树HashMap默认加载因子为什么是0.75HashMap中,key的存储索引计算方式HashMap数组的长度为什么是2的幂次方HashMap的put方法流程一般使用什么类型作为KeyHashMa......
  • java实现一个动态监控系统,监控接口请求超时的趋势
    目录整体思路案例实现1.数据收集2.数据聚合3.趋势分析4.异常检测5.异常处理定时任务整体思路理想情况下,你可以实现一个简单的动态监控算法来检测渠道请求的响应时间趋势,并在发现频繁超时的情况下进行处理。以下是一个可能的算法框架:数据收集:首先,你需要收集......
  • JavaSE 关键字和标识符
    目录关键字标识符标识符命名规则标识符命名规范字面值关键字具有特殊含义的命名时不可以与关键字重名标识符也就是名字,对类名,变量名称,方法名称,参数名称等修饰标识符命名规则以字母,下划线_或者$开头,其后可以是字母,数字,下划线或$如:Aa$hm5abc69_如:helloHELL......
  • JavaSE 流程控制语句if while for
    目录控制语句if条件结构switch语句switch与if区别for循环while循环while与dowhile控制语句条件语句-根据不同条件,执行不同语句ifif...elseif...elseifif...elseif...elseif...elseswitchif条件结构if条件结构是根据条件判断之后再做处理if-elseif-elsei......
  • 【初探Java之路 六 】集合1-ArrayList和LinkedList的使用与源码分析
    ......
  • JavaSE 数据类型以及基本转化与包装
    目录数据类型.1.基本类型(八个)数值型整型类型byte型:1字节8bit位第一位是符号位nullshort型:2字节int型:4字节long型:8字节浮点类型float:4字节double:8字节%%java浮点型默认为double类型%%字符型(char)2字节使用了Unicode编码兼容了Ascll码可以参与算术运算,本质是使用了Unicod......
  • Java SE入门及基础(53)& 方法引用
    目录方法引用1.应用场景示例分析2.方法引用符示例解释说明3.静态方法引用语法示例4.成员方法引用语法示例示例5.this引用成员方法语法示例6.super引用父类成员方法语法示例7.构造方法引用语法示例方法引用1.应用场景方法引用   来......
  • Java SE入门及基础(54)& 函数式接口
    目录1.什么是函数式接口函数式接口示例示例2.函数式编程示例3.Lambda表达式延迟执行应用场景示例4.Consumer接口解释说明示例5.BiConsumer接口解释说明示例6.Predicate接口解释说明示例练习7.Function接口解释说明示例练习1.什么是函数......
  • JavaScript事件监听
    在JavaScript中,事件监听是一种重要的机制,用于在特定事件发生时执行特定的代码。这些事件可以是用户的交互行为(如点击、鼠标移动等),也可以是浏览器的一些特定行为(如页面加载完成、窗口大小改变等)。事件监听通常使用addEventListener方法实现。以下是一个基本的示例:javascript//......