当前位置:网站首页>没有对象的可以进来看看, 这里有对象介绍

没有对象的可以进来看看, 这里有对象介绍

2022-08-09 08:48:00 Java大厂面试君


一、面向对象概念

是相对于面向过程而言,过程其实就是函数,对象是将函数和属性进行了封装。

  1. 将复杂的事情简单化。
  2. 面对对象将一切的过程中的执行者,变成了指挥者
  3. 面向对象思想符合人们思考习惯的一种思想

二、面向对象和面向过程的区别

  • 面向过程:事物比较简单,可以用线性的思维去解决
  • 面向对象:事物比较复杂,使用简单的线性思维无法解决
  • 共同点:都是解决实际问题的一种思维方式。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理

三、Java中的面向对象

对象

接收消息的实体,一切皆为对象,对象都有属性和行为,对象都属于某个类,每个对象都是独一无二的

创建对象的蓝图和模板

  • 类的属性:数据抽象
  • 类的方法:行为抽象
  • 构造器(构造方法)

接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口与类相似点:

  • 一个接口可以有多个方法。
  • 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
  • 接口的字节码文件保存在 .class 结尾的文件中。
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

接口与类的区别:

  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。

接口特性:

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public
    abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

继承

当一个对象获取父对象的所有属性和行为时,称为继承。它提供代码可重用性,它用于实现运行时多态性。继承是面向对象的编程概念,一个对象基于另一个对象构建。继承是代码重用的机制, 被继承的类称为超类,继承超类的类称为子类。在java中使用extends关键字来实现继承。

class SuperClassA {
    
    public void run(){
    
        System.out.println("SuperClassA");
    }

}
// 继承 SuperClassA 类
class SubClassB extends SuperClassA{
    

    public void start(){
    
        System.out.println("SubClassB");
    }

}

public class Test {
    
    public static void main(String args[]){
    
        SubClassB a = new SubClassB();

        a.run();
        a.start();
    }

多态

多态是同一个行为具有多个不同表现形式或形态的能力。
多态的优点

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性
    多态存在的三个必要条件
    继承
    重写
    父类引用指向子类对象:Parent p = new Child();
class Car {
    
    void run() {
    
        System.out.println("bababa");
    }
}

class Bus extends Car {
    
    void run() {
    
        System.out.println("dididi");
    }

    public static void main(String args[]) {
    
        Car c = new Bus();// upcasting - 向上转换
        c.run();
    }
}

封装

在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
通过仅提供setter或getter方法,可以使类为只读或只写。
封装的优点

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。
public class Student {
    
    private String name;

    public String getName() {
    
        return name;
    }

    public void setName(String name) {
    
        this.name = name;
    }
}
class Test {
    
    public static void main(String[] args) {
    
        Student s = new Student();
        s.setName("vijay");
        System.out.println(s.getName());
    }
}


重载(overload)

  • 方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数列表选择对应的方法
  • 共同:同一个类,同一个方法名
  • 不同:参数列表不同(类型,个数,顺序不同)
  • 与返回值无关

方法重写(override)

  • 在子类中可以根据需要对从父类中继承来的方法进行重写
  • 重写方法必须和被重写方法具有相同方法名称,参数列表和返回类型
  • 重写方法不能使用比被重写方法更严格的访问权限(由于多态)

面向对象的三大特征

3 个核心特性:继承、封装和多态 。
在这里插入图片描述

原网站

版权声明
本文为[Java大厂面试君]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_37943811/article/details/115679931