Java基础点——面向对象(中)
虽然没人看,但是也整理一下。这些都是个人重新复习java觉得需要注意的小知识点。
继承性
a) class Students extends Person(){}
b) 子类:派生类 subclass
c) 父类:超类,基类,superclass
d) 一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构:属性和方法包括父类的私有结构继承的规定
a) 只支持单继承和多层继承,不允许多重继承
b) 一个类只能有一个父类
c) 可以通过接口interface进行扩展Object类和功能
a) Java.lang.Object类是所有的类的父类或者间接父类Java assert()断言关键字
a) 1、assert condition; .assert需要显示的开启生效才有作用。
这里condition是一个必须为真(true)的表达式。如果表达式的结果为true,那么断言为真,并且无任何行动
如果表达式为false,则断言失败,则会抛出一个AssertionError对象。这个AssertionError继承于Error对象,
而Error继承于Throwable,Error是和Exception并列的一个错误对象,通常用于表达系统级运行错误。方法的重写(overwrite) 区分方法的重载(一个类中可以有多个不同参数列表的方法)
a) 在子类中,可以根据需要对父类中继承来的方法来进行改造,也称为方法的重置、覆盖。在程序执行的时候,子类的方法将父类的方法覆盖。
b) 要求
i. 子类的方法名必须 和父类被重写的方法具有相同的名字和参数列表。
ii. 子类不可以降低可见性 权限修饰符必须大于父类
iii. 特殊情况:父类中的private方法无法被重写
iv. 返回值类型:Void:若父类为void 子类一定是void
若父类的返回值为A类 子类可以返回A类或者A类的子类
若父类为基本数据类型(基本数据类型 无子类),则子类只能使用相同的。
v. 子类重写的方法抛出的异常类型 不大于 父类的异常类型
vi. 若非static可以被重写,若子类和父类都声明为static,不是重写!!四种权限修饰
a) Private: 同一个类中,不可以在同一个包中其他的类调用
b) 缺省:同一个包
c) Protected:同一个包中,不同的包不能使用,除非是不同包的子类调用
d) Public 同一个工程Super关键字的使用
a) 理解为:父类的
b) 子类重写了父类的方法后,可以使用super关键字再次使用父类的方法
c) 默认调用子类的属性和方法,若想要调用父类的,使用super修饰
d) Super调用构造器:
i. 在子类构造器中使用super(形参列表),调用父类中声明的指定的构造器
ii. 构造器中:Super(形参)必须声明在子类构造器的首行,
iii. This()和super()不能同时出现
iv. 子类构造器首行若没有显式this()super() 默认使用父类的空参构造器
v. 因为子类构造器默认要有this()或者super()所以若子类没有显示this()super() || 父类没有空构造器,子类必须完善父类的有参数构造器
vi. 类的多个构造器中,至少有一个使用了super()构造器子类对象实例化的过程
a) 结果看:子类继承父类之后,获得父类的方法和属性,在堆空间(heap)中,会加载所有父类的属性
b) 过程来看:子类构造器创建子类对象时,会直接和间接的调用父类的构造器,直到掉用到Object中的空参的构造器为止—>所以子类才可以调用属性和方法面相对象的第三个属性:多态性polymorphism—>只适用于方法,不适用于属性
a) 一个事务的多种形态
b) 父类的引用指向子类的对象 Person per = new man();
c) 当调用子类和父类同名参数的方法时,实际执行的是子类重写父类的方法—虚拟方法调用
d) 但是无法调用子类的特有方法
e) 编译器只能调用父类中(左边)申明的方法,实际执行子类重写的方法(右边)
f) 编译看左边;运行放右边
g) 例:使用父类的引用,调用不同类型数据库的方法
i. 方法 public void doData(Connection con){}
ii. 调用 public void doData(new MySQLConnection){}
iii. 这个例子中,方法参数的类Connection,可以根据传入的不同的子类而使用不同子类的函数,来操作不同类型的数据库多态特点
a) 多态是运行时行为,属于动态绑定。只有方法调用的那一刻,解释运行期interpreter才知道所调用的具体方法,也成为后绑定。和方法重载相反。
b) 父类的方法成为虚拟方法,父类根据赋予给他的不同的子类对象,动态调用属于子类的该方法。这种方法调用是在编译器无法确定的向下转型
a) 背景:动态绑定不能调用子类特有的属性和方法,编译时是父类的类型
b) 如何调用特有的:Man m1 = (Man)p2; Man是P2的子类
c) 和基础数据类型对比:自动类型提升向上转型:多态 强制类型转换—>向下转型:使用instanceof判断Instanceof操作符
a) X instanceof A:检验x是否为类A的实例,返回值为BooleanObject类的使用
a) 所有java的跟父类,若未使用extends来指明父类,object为默认父类
b) 只有一个空参构造器
c) Clone()
d) Finalize()方法的使用,可以通过system.gc()通知系统进行垃圾回收,垃圾回收机制在回收对象之前,总会先调用他的finalize方法。不主动调用该方法
e) getClass()获取对象当前的类
f) hashCode()返回对象的hash值
g) notify(),wait() —> 线程相关
h) toString();
i) equal(Object obj);比较两个对象是否相等
i. == 和 equal的区别==是运算符 可以使用在基本数据类型变量和引用类型数据变量中
a) 比较基本数据类型,比较两个变量的保存的数据是否相等。(不一定要相同的类型)
b) 比较引用数据类型:比较两个变量的地址值是否相等,是否指向同一个对象实体Equals()的使用
a) 是一个方法而非运算符
b) 只能适用于引用数据类型
c) Object类中的equals:return (this == obj); 和==作用相同
d) 对于String Date File 包装类都重写了equals()方法,比的是两个对象的实体内容是否相等
j) 自定义类手动实现重写Object.equals()
i. 使其比较对象实体内容而并非引用数值。
重写时比较String使用equals!!!String s == “aa” 时,“aa”存在与常量池中
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj instanceof CLASS){
CLASS class = (CLASS)obj//强制转换
//比较两个对象的每个属性是否相同
if(this.name == obj.name && this.id.equals(obj.id) ){//假设id为引用数据类型,name为基本数据类型
return true;
}else
return false;
}
//return this.name == obj.name && this.id.equals(obj.id)
}toString()方法
a) 当输出一个对象的引用时,就是调用该对象的toString方法,自定义类返回地址
b) String Date File 包装类都重写了toString方法。调用时直接返回实体内容信息
c) 自定义类也可以重写toString方法,返回是实体对象。单元测试方法的使用
a) Junit单元测试,选中当前过程
b) 创建java类进行单元测试包装类(wrapper的使用)
a) 针对八种基本数据类型相应的引用类型——包装类, 使得基本数据类型也有类的特征
b) Byte, Short, Integer, Long, Float, Double—父类是Number
c) Character,Boolean基本数据类型,包装类,String之间的相互转换
a) 基本数据类型与包装类相互转换
i. 装箱 通过构造器Integer I = new Integer(11); 自动装箱
ii. 拆箱 调用包装类方法:xxxValue() 自动拆箱
b) 基本数据类型与String
i. String类的ValueOf(3.4f) 3.4+””
ii. 调用包装类ParseXxx(String)静态方法 包装类构造器:boolean b = new Boolean(“true”);
c) 包装类与String
i. 包装类对象toString方法 调用包装类toString(形参)
ii. 字符串传参:Float f = new Float(“22.1F”);
iii. JDK:5.0新特性:自动装箱和拆箱
iv. 对于自动装箱在Integer包中,定义了静态的缓存数组范围-128-127 IntegerCache[],方便自动装箱
若赋值Integer a = 1;则返回静态数组的地址(自动装箱)
若赋值Integer a = 128;非自动装箱,会new一个对象
Java基础点——面向对象(中)相关推荐
- java面向对象中的抽象,类与对象
一.抽象 什么是抽象?将鸽子和麻雀看做是鸟,这是抽象:将整个空调的行为用遥控代替,遥控就可以看做是空调的抽象:将外貌,种族,语言等等形形色色不同的个体看做是人这样一个概念,这也是抽象. 在编程语言中, ...
- Java web 圈子设计_关于Java web开发中的面向对象问题?
这可能是受培训班/网络视频教程的荼毒而导致的情况,虽然很多人口口声声地说java是面向对象,但是他们平时工作过程中却是面向接口函数的面向过程的编程,自己还不自知,说起java的面向对象仍是一脸自豪,很 ...
- java基础面向对象_Java基础面向对象
一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别,作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- 从C++到Java --理解面向对象是关键所在
从C++到Java --理解面向对象是关键所在 本文将提供一个对这些概念的简明的解释,而不是提供一些深入的或者如何使用的问题.记住,这只是依据我对Java的经验带而提出的一些主要的差异. Java在虚 ...
- Java怎么学?在学Java的过程中要注意些什么呢?
Java是属于一种面向对象的编程语言,现在很多企业都是使用Java进行大项目的开发.所以在学习Java之后,从业前景是非常广阔的.那么,Java怎么学?在学Java的过程中要注意些什么呢?下面,跟着小 ...
- 如何学习Java? 在学习Java的过程中需要掌握哪些技能?
作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多如下的困惑:如何学习Java? 在学习Java的过程中需要掌握哪些技能?Java学习过程中有哪些注意事项? ...
- Java 基础 - 面向对象(不错N多教程集合)
著作权归https://pdai.tech所有. 链接:Java 基础 - 面向对象 | Java 全栈知识体系 本文主要介绍Java OOP 面向对象基础和相关类图.@pdai Java 基础 - ...
- JAVA的面向对象编程--------课堂笔记
面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做 ...
最新文章
- 谈一谈算法工程师的落地能力
- 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。...
- Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分
- python网络编程(苦肝一夜,近万字)
- Python学习系列day5-python基础
- cordova+vue 项目打包成Android(apk)应用
- 对应sql建表_图解SQL面试题:如何查找工资前三高的员工
- hadoop编程-maven环境搭建
- Win10 64位+VS2015+OpenCV3.4.2重编译
- pyqt5 实现右键自定义_Python界面(GUI)编程PyQt5事件和信号
- oracle dba (适用,OracleDBA笔试题
- 毕设题目:Matlab图像评价
- selenium1、selenium2 示例代码(java版)
- Java远程连接数据库——远程连接MySQL数据库,操作和管理MySQL数据库
- 听完计算机知识讲座后感悟,计算机技能培训心得感想
- 三角形法则平行四边形法则
- 2014中韩大数据论坛发现大数据的价值
- 海康威视实习生面试总结
- ORAN专题系列-30:5G基站如何升级到O-RAN基站 - FHGW(FrontHaul Gateway)的时钟同步系统
- 离线语音蓝牙设计应用案例
热门文章
- 并发编程之 Java 内存模型 + volatile 关键字 + Happen-Before 规则
- 【线性表4】线性表的链式实现:静态表
- LinkedIn公司采用超大规模数据中心设计
- hibernate validate验证框架中@NotEmpty、@NotbBank、@NotNull的区别
- jquery实现动态五角星评分
- mvn本地生成jar包放在mvn项目依赖(将jar包传到本地仓库)
- latex 特殊符号
- python下处理win和linux分行符
- 【正一专栏】巴萨艰难收获一场平局
- 【Python-ML】SKlearn库特征抽取-KPCA