一、面向对象编程(Object-Oriented Programming, OOP)

  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
  • 从认识论的角度:先有对象后有类。对象是具体的事物,类是对对象的抽象。
  • 从代码运行的角度,先有类,再有对象。类是对象的模板。

二、创建与初始化对象

  • 使用new关键字创建对象
  • 使用new关键字创建的时候,除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。

三、构造器

  • 类中的构造器也称为构造方法,是进行创建对象的时候必须要调用的。
  • 特点:① 和类名相同;② 没有返回值,也不能写void;
  • 作用:① new本质在调用构造方法;② 初始化对象的值;
  • 注意点:一旦定义了有参构造,无参就必须显示定义。

四、创建对象内存分析

这篇博客讲得很详细。

https://blog.csdn.net/cccccccmmm/article/details/125940147

五、三大特性:封装、继承、多态

封装

  • 程序追求“高内聚,低耦合”;
  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
  • 低耦合:仅暴露少量的方法给外部使用;
  • 属性私有,get、set方法;
  • 关键词:private;

继承

  • 继承的本质是对某一批类的抽象;
  • extends的意思是“拓展”,子类是父类的拓展;
  • Java中类只有单继承,没有多继承;
  • 继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等;
  • 继承关系可以分成两个类,一个是子类(派生类),一个是父类(基类)。
  • 四个修饰符:public/protected/default/private;
  • private 私有的东西无法被继承;
  • 在Java中,所有的类都默认继承Object类;

super

  • super是调用父类的构造方法,必须在构造方法的第一个;
  • super必须只能出现在子类的方法或者构造方法中;
  • super和this不能同时调用构造方法;

方法重写

  • 方法重写的作用与相关解释:

    http://c.biancheng.net/view/1000.html
  • 老师在课堂上举的例子的原因:

    静态方法是类的方法,而非静态方法是对象的方法;

    有static时,b调用了B类的方法,因为b是用B类方法定义的;

    没有static时,b调用的是对象的方法,而b是用A类new的,即B是A new出来的对象,因此调用了A的方法。
  • 什么情况下能进行方法重写?
  1. 有继承关系,子类重写父类的方法;
  2. 方法名必须相同,参数列表必须相同;
  3. 修饰符:范围可以扩大但不能缩小;public>protected>default>private
  4. 抛出的异常:范围可以被缩小,但不能扩大;ClassNotFoundException-->Exception

多态

同一个方法可以根据发送对象的不同而采用多种不同的行为方式。

子类能调用的方法都是自己的或者继承父类的;

父类可以指向子类,但是不能调用子类独有的方法;

instanceof

判断一个对象是什么类型。

类型转换

低转高可以自动转换,子类转换成父类;

高转低需要强制类型转换,父类转换成子类,(转换后的类型).变量名;

Java基础Day6-面向对象的更多相关文章

  1. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  2. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  3. java基础-day6

    第06天 java基础语法 今日内容介绍 u Eclipse断点调试 u 基础语法的练习 第1章   Eclipse断点调试 1.1      Eclipse断点调试概述 Eclipse的断点调试可以 ...

  4. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  5. 【Java基础】面向对象下

    面向对象下 这一章主要涉及其他关键字,包括 this.super.static.final.abstract.interface.package.import 等. static 在 Java 类中, ...

  6. 【java基础】面向对象的三大基本特征之-------继承

    面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...

  7. 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

    ---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...

  8. 再探java基础——对面向对象的理解(1)

    对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件.对象具有属性和行为,在程序设计中对象实现了数据和操作的结合,使数 ...

  9. Java基础(6)- 面向对象解析

    java面向对象 对象 知识点 java 的方法参数是按值调用,是参数的一份拷贝 封装 使用private将 属性值/方法 隐藏,外部只能调用 get,set方法/非private 的接口 获取 重载 ...

  10. Java基础总结--面向对象1

    ---面向对象的概念---1.面向过程与面向对象的区别面向过程:是一种思维习惯,解决一个问题的时候靠的是一个个方法调用--核心是动作面向对象:是一种更接近生活中解决问题的思维习惯,解决特定的问题靠对象 ...

随机推荐

  1. 查看树莓派CPU当前工作频率

    参考: https://raspberrypi.stackexchange.com/questions/1219/how-do-i-determine-the-current-mhz /proc/cp ...

  2. 用H5 Canvas绘制一个仪表盘笔记

    前端有许多做数据可视化的图表插件,但有时候UI设计的图可能用现成的js插件无法定制或者比较麻烦(还不如自己造轮子来的快). 下面记录下用H5 canvas设计一个仪表盘代码: <!DOCTYPE ...

  3. CAD中如何将图形对象快速转换成三维曲面?

    天小编将接着上节内容给大家分享浩辰CAD软件中将图形对象快速转换成三维曲面的相关操作技巧,感兴趣的小伙伴可以和一起来了解一下哦! CAD中将图形转换为曲面的操作步骤: 1.用浩辰CAD软件中打开图纸后 ...

  4. Redis缓存中的数据和数据库不一致

    首先关于两者数据的一致性包含有两种情况: (1)缓存中有数据时,那数据库中的数据要和缓存中的数据相同: (2)缓存中没有数据时,数据库中的数据必须是最新的. 如果不符合以上两种情况,就属于缓存和数据库 ...

  5. pytest_runtest_makereport 获取pytest的测试结果和caseid

    目的: 自动获取pytest case执行结果和caseid 存为变量,后续可以和case管理工具集成 @pytest.hookimpl(hookwrapper=True, tryfirst=True ...

  6. vue 绑定样式,跟点击事件的顺序会影响

    <view class="mfst-item" v-for="(item, idx) in majorArr" :key="mfsKey&quo ...

  7. win10家庭版vmwarework启动蓝屏

    最终升级到vmwarework16.2.5解决 据说17支持win11 再出问题直接上vm17了

  8. C++ Error:C2011: 'struct' type redefinition

    C++ Error:C2011: 'struct' type redefinition        在c语言中,对同一个变量或者函数进行多次声明是不会报错的.所以如果h文件里只是进行了声明工作,即使 ...

  9. vim超级替换

    vim实现变量替换, 检测代码中#0-F0-FH替换为0x0-F0-F,例如#09FH替换为0x09F :%s/#\(\w\)\(\w\)\(\w\)H/0x\1\2\3/g 注: 标准格式 :s/p ...

  10. The `.update()` method does not support writable nestedfields by default. Write an explicit `.update()` method for serializer `...`, or set `read_only=True` on nested serializer fields.解决办法

    原因 Serializers中,外表的字段如source="group.title"不能进行写入操作 解决办法 将外表字段设置为read_only=True,此时可能有人就会问了: ...