首页 > 其他分享 >OOP:面向对象

OOP:面向对象

时间:2023-08-19 16:56:12浏览次数:38  
标签:访问 对象 子类 面向对象 OOP 修饰 父类 方法

OOP:面向对象

思想
80年代,百花争名,OOP(面向对象编程) OOA(面向对象分析) OOD(面向对象设计)
程序即现实:模拟现实世界
万事万物皆对象
核心:类和对象
类是对象的抽象,对象是类的具体
类:抽象的,模板,概念,是一些具体共同特征和行为的一类的定义
对象:实际存在的,通过类来创建
类的组成:属性(特征)和方法(行为)
目的:消除重复代码
优点:1.可重用性 2.可扩展性 3.可管理性

  实例变量
 
局部变量
 
位置
 
直接书写在类内部
 
定义在方法中
 
默认值
 
有默认值,与数组相同
 
没有默认值
 
作用范围
 
整个类中
 
离当前变量最近的大括号以内
 
生命周期
 
随着对象的创建而生效,随着对象被垃圾回收而死亡
 
随着方法的入栈而生效,随着方法的出栈而死亡
 
存储位置
 
实例变量全部在堆中
 
局部变量基本数据类型存在栈中,引用数据类型名字在栈,内容在堆
 
命名
 
可以与局部变量重名,就近原则使用
 
局部变量与局部变量之间不能重名
 

  三大特征
  封装
封装就是需要在实现的把一部分不让别人看到的操作封装起来,留下一个接口让别人可以直接来调用。
保护信息,聚合内容
类的创建就是封装的体现
封装:私有属性,公有方法
  继承
把多个类相同的内容抽取到父类中,形成继承关系
能不用就不用
单继承
继承就是子类在父类的基础上边可以有自己的方法,同时可以使用父类非私有化的方法和变量,同时当父类的方法不足以满足需求的时候,还可以重写父类的方法,除此之外还可以有自己的方法,但是Java中只能实现单继承,不过可以通过内部类的方式来解决这个问题
  重载和重写的区别:
重载:同一个类中,方法名相同,形式参数不同
重写:在子类中,可以对父类的方法进行重写,不能比父类的更严格
  位置
 
方法名
 
参数列表
 
返回值
 
访问修饰符
 
方法重载
 
同类中
 
相同
 
不同
 
无关
 
无关
 
方法重写
 
子类中
 
相同
 
相同
 
相同或者是其子类
 
不能比父类更严格
 
  多态
多态,就是一种东西具备多种形态,分为编译时多态(重载)和运行时多态(重写、对象转型)

向上转型:父类作为形参、父类类型作为返回值;向上转型的方式实现多态
父类引用指向子类对象;可以调用子类重写父类的方法和子类继承父类的方法,不能调用子类独有的方法。
Pet dog1 = new Dog();
向下转型:向上转型后,此时的对象是不能访问子类独有的方法的,如果需要访问,必须强制向下转型
Dog dog2 = (Dog) dog1 向下转型可以调子类独有的方法

通过instanceof关键来判断类型是否合理
对象a instanceof 类型A 表示判断对象a 是否属于A类类型的
对象转型:子类可以代指父类,父类对象如果是子类对象充当的,那么父类对象也可以转换为子类对象
想向下转型,先向上转型
  什么是多态,多态的优点,多态实现的条件
(1)就是对于同一消息,根据调用对象的不同做出不同的反应,例如一个接口,这个接口的不同实现类,对这个方法的实现不一样,当调用时候得出的结果也就不一样。
(2)多态的优点是
可替换性,例如计算一个圆的面积,这个方法同样可以计算圆环的面积。
可扩展性,就是如果新增一个方法,不会破坏已经存在的方法的继承性和多态性。
(3)多态实现的三个条件:重写、继承、父类引用指向子类对象。
  关键字
  final 最终的
修饰类 没有子类,不能被继承
修饰方法 可以被继承,不能重写
修饰属性 常量
final可以用来修饰方法,类,变量,常量等,被fina|修饰的方法不能够被重写,被final修饰的类不能被继承,被final修饰的变量中成员变量一旦被赋予初始值就不能改变,被final修饰的局部变量一旦赋值就不能改变,被final修饰的常量不能改变,在编译时期存储到常量池中,被final修饰的引用对象,不能改变引用的内容。
  static
静态 类 范围很广
修饰类
修饰方法 静态方法中不能直接访问非静态的方法;非静态方法中可以直接访问静态的方法
修饰属性 static修饰的属性称之为静态属性,在内存中只有一份拷贝,属于整个类,不属于任何对象,可以被当前类的所有独享共享
修饰代码块 static修饰的代码块称之为静态代码块,当JVM加载类的时候自动执行,不能调用,多个静态代码块按照顺序执行,每个静态代码块只执行一次。
  abstract
抽象 模糊
修饰类 抽象类
修饰方法 抽象方法 没有方法体,只有方法声明
  this
当前类的对象 实例
代指本类对象 参数传递 调用实例属性或方法 调用构造函数
this可以访问属性、普通方法、构造方法;但是访问构造方法时,要求必须在本类中构造方法的第一句 而且在同一个构造方法中只能使用一次this访问构造
  super
表示父类对象,可以访问父类访问权限允许的属性,方法,构造方法
可以调用父类的标记符
调用父类的构造函数、属性、方法等
  this和super的区别
this表示当前对象。super不能表示父类对象
this访问本类中的属性,如果本类中没有就去父类中查找;super则直接访问父类中的属性
this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父类中的方法。
this调用本类构造,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。
  访问修饰符
public 公共的,都可以访问 本类中 本包中 子类中 本项目
protected 受保护的,本类内部可用,所有的子类中 本类中 本包中 子类中
private 私有的,本类内部使用 本类中
没有访问修饰符 同包下可以 本类中 本包中
访问访问权限从高到低:public>protected>没有访问修饰符>私有
  接口
interface
模板的定义结构体,主要可以实现规范化开发
1.7和1.8差异 1.8支持默认实现default
接口中方法默认:public修饰 abstract
  枚举
特殊的类,可以定义变量,用于多种状态的定义
语法格式:enum 枚举名称{变量1(值),……;私有属性 值,公有getter ,私有构造函数 为私有属性赋值}
  内部类
静态内部类
成员内部类
局部内部类
匿名内部类
  面试题
  1.抽象类和接口的区别
(1)从方法上来说,抽象类中的方法可以为抽象方法也可以是非抽象方法,接口中的方法只能够是抽象方法,抽象类的抽象方法没有方法体,接口的抽象方法在jdk1.8中是可以有方法体的。
(2)抽象类的变量没有final修饰,接口中的变量都被public static final修饰。
(3)抽象类只能够单继承,他的子类不用重写其全部方法,接口能够实现多实现,他的实现类必须重写其全部方法。
  2.final、finally、finalize的区别
final是常量,可以修饰类,方法,变量。
finally是在try catch最终语句执行的,是就算捕获到异常,依然会执行的语句,例如关闭流。
finalize是垃圾回收机制中的一个方法。
  3.运行时异常,一般异常的区别
(1)运行时异常是不需要用户处理的,是程序运行的时候。jvm抛出的异常,一般异常是用户声明在方法后边可能抛出的异常,是用户处理的
(2)运行时异常在编写方法的时候不能被捕获或者抛出,一般异常是在编写方法的时候可以被捕获或者抛出的
Error是Jvm中出现的重大错误
Excption分为三种:编译时异常、运行时异常、一般异常

标签:访问,对象,子类,面向对象,OOP,修饰,父类,方法
From: https://www.cnblogs.com/wangprince2017/p/17642667.html

相关文章

  • 基于JAVA+hadoop网络云盘上传下载系统-计算机毕业设计源码+LW文档
    摘 要随着信息技术的发展,管理系统越来越成熟,各种企事业单位使用各种类型的管理系统来提高工作效率,从而降低手工劳动的弊端。网络云盘能够为广大用户提供安全、免费、方便的存储空间,还能实现资源的共享,但是网络云盘还是存在不足,如何为用户提供更简单明了、便于操作的云盘空间就......
  • Loopback4: 使用QQ邮箱发送邮件
    前置动作从QQ邮箱中,获取授权码,具体方式请自行百度代码撰写环境安装npminstallnodemailer创建一个用于发送邮件的Serviceimport{injectable,/*inject,*/BindingScope}from'@loopback/core';importnodemailerfrom'nodemailer';@injectable({scope:BindingScop......
  • Hadoop3.3.0--Linux编译安装
    Hadoop3.3.0--Linux编译安装本实验内容教程来源于“黑马程序员”如有侵权请联系作者删除基础环境:Centos7.7编译环境软件安装目录mkdir-p/export/server一、Hadoop编译安装(选做)可以直接使用课程提供已经编译好的安装包。安装编译相关的依赖yuminstallgccgcc-c+......
  • C#面向对象的三大特征
    一、封装封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息。简单地说,一个类就是一个封装了数据及操作这些数据的代码的逻辑实体。目的是增强程序的安全性、简化编程、代码的重用性更高,让修改或扩展更方便。......
  • 面向对象开发的封装
    封装被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。封装使用 访问修饰符 来实现。一个 访问......
  • Netty源码学习2——NioEventLoop的执行
    系列文章目录和关于我零丶引入在《Netty源码学习1——NioEventLoopGroup的初始化》中,我们学习了NioEventLoopGroup和NioEventLoop的初始化,在下面netty服务端启动的demo中会在ServerBootStrap中指定Channel为Nio类型的Channel,然后启动的时候绑定端口,之前我们解释道NioEventLoop......
  • 20-面向对象编程-多态
    面向对象编程有三大特征:封装、继承和多态 访问修饰符可以控制属性的访问范围public:表示公共访问级别,可以被任何类访问。protected:表示受保护访问级别,可以被类本身、子类和同一包中的类访问。default(缺省):表示默认访问级别,即如果没有使用访问修饰符,默认是此级别,可以被同一包......
  • 面向对象——封装
    什么是封装    面向对象编程是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。封装被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码......
  • 19-面向对象-方法重写(Override)
    基本介绍重写(Override):是指子类中有一个方法和父类的某个方法的名称、返回类型、参数完全一样,那么我们就说子类的这个方法覆盖了父类的方法即在Java中,子类在重写父类的方法时,必须与父类方法的修饰符、返回值类型、方法名(参数列表)要完全一致publicclassOverride01{pu......
  • 第十节 面向对象综合训练(拓展)
    练习一:​ 自行完成切换美女图片的功能。需求如下:需求详解:1,在功能选项中添加更换图片,在更换图片里面再添加美女,动物,运动。​代码中功能是JMenu,更换图片也是JMenu,美女,动物,运动是三个JMenuItem​代码如下://创建菜单并添加到界面当中//1.创建菜单JMenuBar的对象J......