Java基础Day6-面向对象
一、面向对象编程(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的方法。 - 什么情况下能进行方法重写?
- 有继承关系,子类重写父类的方法;
- 方法名必须相同,参数列表必须相同;
- 修饰符:范围可以扩大但不能缩小;public>protected>default>private
- 抛出的异常:范围可以被缩小,但不能扩大;ClassNotFoundException-->Exception
多态
同一个方法可以根据发送对象的不同而采用多种不同的行为方式。
子类能调用的方法都是自己的或者继承父类的;
父类可以指向子类,但是不能调用子类独有的方法;
instanceof
判断一个对象是什么类型。
类型转换
低转高可以自动转换,子类转换成父类;
高转低需要强制类型转换,父类转换成子类,(转换后的类型).变量名;
Java基础Day6-面向对象的更多相关文章
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...
- java基础-day6
第06天 java基础语法 今日内容介绍 u Eclipse断点调试 u 基础语法的练习 第1章 Eclipse断点调试 1.1 Eclipse断点调试概述 Eclipse的断点调试可以 ...
- Java基础之面向对象以及其他概念
一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...
- 【Java基础】面向对象下
面向对象下 这一章主要涉及其他关键字,包括 this.super.static.final.abstract.interface.package.import 等. static 在 Java 类中, ...
- 【java基础】面向对象的三大基本特征之-------继承
面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...
- 再探java基础——对面向对象的理解(1)
对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件.对象具有属性和行为,在程序设计中对象实现了数据和操作的结合,使数 ...
- Java基础(6)- 面向对象解析
java面向对象 对象 知识点 java 的方法参数是按值调用,是参数的一份拷贝 封装 使用private将 属性值/方法 隐藏,外部只能调用 get,set方法/非private 的接口 获取 重载 ...
- Java基础总结--面向对象1
---面向对象的概念---1.面向过程与面向对象的区别面向过程:是一种思维习惯,解决一个问题的时候靠的是一个个方法调用--核心是动作面向对象:是一种更接近生活中解决问题的思维习惯,解决特定的问题靠对象 ...
随机推荐
- 调度器30—调度相关结构体—p->flags
一.PF_EXITING 1. 赋值路径 各驱动和内核机制中直接调用 SYSCALL_DEFINE1(exit, int, error_code) //exit.c do_exit(code); // ...
- C#消息泵探索(一)
消息泵 消息泵,又叫消息循环. 消息循环使用一个图形化用户界面下Microsoft Windows.具有GUI的Windows 程序是由事件驱动的.Windows为每个创建窗口的线程维护一个单独的消 ...
- 【NPDP专项练习】第六章 市场研究
第六章 市场研究 1.VOC也叫客户心声,指的是. A 选择一个单一的投资组合项目,并保证所有项目都在策略内 B 利用迭代在专家组中形成共识的决策 C 通过人工"商店"引导潜在客户 ...
- 《Spring Boot从零开始学(视频教学版)》快速入门Spring Boot应用开发
#好书推荐##好书奇遇季#<Spring Boot从零开始学(视频教学版)>,目前为止较好的一本Spring Boot入门书.京东当当天猫都有发售.本书配套示例代码.课件与教学视频.定价7 ...
- Java 日期类 处理
原始方案:SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD"); //线程不安全类,最好不要用了,替代方案: Date ...
- Solution Set - 杭电多校 2022 Day2 一句话题解
A:看了题就很容易想到虚树吧,建出虚树后考虑整体扫一遍虚树,注意到这是一棵根向树,那么统计其实十分简单,将对 \(C\) 类节点的标记下放,\(A,B\) 类节点同时上传,如果在 DFS 的过程中发现 ...
- 杭电oj 数值统计
Problem Description 统计给定的n个数中,负数.零和正数的个数. Input 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然 ...
- nginx增加自定义账号鉴权
nginx增加自定义账号鉴权 使用nginx反向代理实现 当一个站点内部程序是个黑盒(无法修改里面的请求逻辑),如何增加自己的账号系统鉴权 实现逻辑 使用nginx的反向代理功能 自定义账号系统增加两 ...
- Pytest全局用例共用之conftest.py详解
本文转自:https://blog.csdn.net/qq_36502272/article/details/102975467 一.'conftest特点: 1.可以跨.py文件调用,有多个.py文 ...
- 【Java】【Mybatis】如何调用存储过程和存储函数
https://www.jb51.net/article/230756.htm Mybatis调用存储过程 MyBatis支持使用存储过程的配置.当使用存储过程时,需要设置一个参数"mode ...