当前位置:网站首页>没有对象的可以进来看看, 这里有对象介绍
没有对象的可以进来看看, 这里有对象介绍
2022-08-09 08:48:00 【Java大厂面试君】
一、面向对象概念
是相对于面向过程而言,过程其实就是函数,对象是将函数和属性进行了封装。
- 将复杂的事情简单化。
- 面对对象将一切的过程中的执行者,变成了指挥者
- 面向对象思想符合人们思考习惯的一种思想
二、面向对象和面向过程的区别
- 面向过程:事物比较简单,可以用线性的思维去解决
- 面向对象:事物比较复杂,使用简单的线性思维无法解决
- 共同点:都是解决实际问题的一种思维方式。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理
三、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();
}
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态的优点
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
多态存在的三个必要条件
继承
重写
父类引用指向子类对象: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方法,可以使类为只读或只写。
封装的优点
- 良好的封装能够减少耦合。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
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 个核心特性:继承、封装和多态 。
边栏推荐
- The 5th Blue Cap Cup preliminary misc reappears after the game
- [Vulnerability reproduction] CVE-2018-7490 (path traversal)
- nyoj58 最少步数(DFS)
- 1. LVGL 8.3 在 Visual Studio 2019 模拟器中的环境搭建
- elder blind date
- requests爬取百度翻译
- ASEMI整流桥GBJ810参数,GBJ810封装,GBJ810重量
- Dark Horse 2022 latest redis course notes and knowledge points (for interview)
- BUUCTF MISC Writing Notes (1)
- 【CNN】白话迁移学习中域适应
猜你喜欢
随机推荐
Literature retrieval operation code
leetcode 36. 有效的数独(模拟题)
jdbctemplate connects to sql server, the data found in the code is inconsistent with the database, how to solve it?
第五届蓝帽杯初赛 misc 赛后复现
canvas 文字垂直居中
【CNN】2022 ECCV 对比视觉Transformer的在线持续学习
nyoj58 最少步数(DFS)
交换机的工作原理
电子产品整机结构设计的一般性思路
Venture DAO 行业研报:宏观和经典案例分析、模式总结、未来建议
Where does detection go forward?
Operator Overloading in Inheritance: A Legend of Input and Output
SAE定时备份博客数据库
OpenHarmony Light Smart Product Development Live Notes
【GNN】2022 G-Mixup: Graph Data Augmentation for Graph Classification
Where does detection go forward?
makefile - 学习小结
系统安全及应用
nodeMCU(ESP8266)和RC522的接线图
文献检索作业代码