虽然没人看,但是也整理一下。这些都是个人重新复习java觉得需要注意的小知识点。

  1. 继承性
    a) class Students extends Person(){}
    b) 子类:派生类 subclass
    c) 父类:超类,基类,superclass
    d) 一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构:属性和方法包括父类的私有结构

  2. 继承的规定
    a) 只支持单继承和多层继承,不允许多重继承
    b) 一个类只能有一个父类
    c) 可以通过接口interface进行扩展

  3. Object类和功能
    a) Java.lang.Object类是所有的类的父类或者间接父类

  4. Java assert()断言关键字
    a) 1、assert condition; .assert需要显示的开启生效才有作用。
    这里condition是一个必须为真(true)的表达式。如果表达式的结果为true,那么断言为真,并且无任何行动
    如果表达式为false,则断言失败,则会抛出一个AssertionError对象。这个AssertionError继承于Error对象,
    而Error继承于Throwable,Error是和Exception并列的一个错误对象,通常用于表达系统级运行错误。

  5. 方法的重写(overwrite)  区分方法的重载(一个类中可以有多个不同参数列表的方法)
    a) 在子类中,可以根据需要对父类中继承来的方法来进行改造,也称为方法的重置、覆盖。在程序执行的时候,子类的方法将父类的方法覆盖。
    b) 要求
    i. 子类的方法名必须 和父类被重写的方法具有相同的名字和参数列表。
    ii. 子类不可以降低可见性  权限修饰符必须大于父类
    iii. 特殊情况:父类中的private方法无法被重写
    iv. 返回值类型:

  6. Void:若父类为void 子类一定是void

  7. 若父类的返回值为A类 子类可以返回A类或者A类的子类

  8. 若父类为基本数据类型(基本数据类型 无子类),则子类只能使用相同的。
    v. 子类重写的方法抛出的异常类型 不大于 父类的异常类型
    vi. 若非static可以被重写,若子类和父类都声明为static,不是重写!!

  9. 四种权限修饰
    a) Private: 同一个类中,不可以在同一个包中其他的类调用
    b) 缺省:同一个包
    c) Protected:同一个包中,不同的包不能使用,除非是不同包的子类调用
    d) Public 同一个工程

  10. Super关键字的使用
    a) 理解为:父类的
    b) 子类重写了父类的方法后,可以使用super关键字再次使用父类的方法
    c) 默认调用子类的属性和方法,若想要调用父类的,使用super修饰
    d) Super调用构造器:
    i. 在子类构造器中使用super(形参列表),调用父类中声明的指定的构造器
    ii. 构造器中:Super(形参)必须声明在子类构造器的首行,
    iii. This()和super()不能同时出现
    iv. 子类构造器首行若没有显式this()super() 默认使用父类的空参构造器
    v. 因为子类构造器默认要有this()或者super()

  11. 所以若子类没有显示this()super() || 父类没有空构造器,子类必须完善父类的有参数构造器
    vi. 类的多个构造器中,至少有一个使用了super()构造器

  12. 子类对象实例化的过程
    a) 结果看:子类继承父类之后,获得父类的方法和属性,在堆空间(heap)中,会加载所有父类的属性
    b) 过程来看:子类构造器创建子类对象时,会直接和间接的调用父类的构造器,直到掉用到Object中的空参的构造器为止—>所以子类才可以调用属性和方法

  13. 面相对象的第三个属性:多态性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,可以根据传入的不同的子类而使用不同子类的函数,来操作不同类型的数据库

  14. 多态特点
    a) 多态是运行时行为,属于动态绑定。只有方法调用的那一刻,解释运行期interpreter才知道所调用的具体方法,也成为后绑定。和方法重载相反。
    b) 父类的方法成为虚拟方法,父类根据赋予给他的不同的子类对象,动态调用属于子类的该方法。这种方法调用是在编译器无法确定的

  15. 向下转型
    a) 背景:动态绑定不能调用子类特有的属性和方法,编译时是父类的类型
    b) 如何调用特有的:Man m1 = (Man)p2; Man是P2的子类
    c) 和基础数据类型对比:自动类型提升向上转型:多态 强制类型转换—>向下转型:使用instanceof判断

  16. Instanceof操作符
    a) X instanceof A:检验x是否为类A的实例,返回值为Boolean

  17. Object类的使用
    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的区别

  18. ==是运算符 可以使用在基本数据类型变量和引用类型数据变量中
    a) 比较基本数据类型,比较两个变量的保存的数据是否相等。(不一定要相同的类型)
    b) 比较引用数据类型:比较两个变量的地址值是否相等,是否指向同一个对象实体

  19. 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)
    }

  20. toString()方法
    a) 当输出一个对象的引用时,就是调用该对象的toString方法,自定义类返回地址
    b) String Date File 包装类都重写了toString方法。调用时直接返回实体内容信息
    c) 自定义类也可以重写toString方法,返回是实体对象。

  21. 单元测试方法的使用
    a) Junit单元测试,选中当前过程
    b) 创建java类进行单元测试

  22. 包装类(wrapper的使用)
    a) 针对八种基本数据类型相应的引用类型——包装类, 使得基本数据类型也有类的特征
    b) Byte, Short, Integer, Long, Float, Double—父类是Number
    c) Character,Boolean

  23. 基本数据类型,包装类,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. 对于自动装箱

  24. 在Integer包中,定义了静态的缓存数组范围-128-127 IntegerCache[],方便自动装箱

  25. 若赋值Integer a = 1;则返回静态数组的地址(自动装箱)

  26. 若赋值Integer a = 128;非自动装箱,会new一个对象

Java基础点——面向对象(中)相关推荐

  1. java面向对象中的抽象,类与对象

    一.抽象 什么是抽象?将鸽子和麻雀看做是鸟,这是抽象:将整个空调的行为用遥控代替,遥控就可以看做是空调的抽象:将外貌,种族,语言等等形形色色不同的个体看做是人这样一个概念,这也是抽象. 在编程语言中, ...

  2. Java web 圈子设计_关于Java web开发中的面向对象问题?

    这可能是受培训班/网络视频教程的荼毒而导致的情况,虽然很多人口口声声地说java是面向对象,但是他们平时工作过程中却是面向接口函数的面向过程的编程,自己还不自知,说起java的面向对象仍是一脸自豪,很 ...

  3. java基础面向对象_Java基础面向对象

    一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别,作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该 ...

  4. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  5. 从C++到Java --理解面向对象是关键所在

    从C++到Java --理解面向对象是关键所在 本文将提供一个对这些概念的简明的解释,而不是提供一些深入的或者如何使用的问题.记住,这只是依据我对Java的经验带而提出的一些主要的差异. Java在虚 ...

  6. Java怎么学?在学Java的过程中要注意些什么呢?

    Java是属于一种面向对象的编程语言,现在很多企业都是使用Java进行大项目的开发.所以在学习Java之后,从业前景是非常广阔的.那么,Java怎么学?在学Java的过程中要注意些什么呢?下面,跟着小 ...

  7. 如何学习Java? 在学习Java的过程中需要掌握哪些技能?

    作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多如下的困惑:如何学习Java? 在学习Java的过程中需要掌握哪些技能?Java学习过程中有哪些注意事项? ...

  8. Java 基础 - 面向对象(不错N多教程集合)

    著作权归https://pdai.tech所有. 链接:Java 基础 - 面向对象 | Java 全栈知识体系 本文主要介绍Java OOP 面向对象基础和相关类图.@pdai Java 基础 - ...

  9. JAVA的面向对象编程--------课堂笔记

      面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做 ...

最新文章

  1. 谈一谈算法工程师的落地能力
  2. 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。...
  3. Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分
  4. python网络编程(苦肝一夜,近万字)
  5. Python学习系列day5-python基础
  6. cordova+vue 项目打包成Android(apk)应用
  7. 对应sql建表_图解SQL面试题:如何查找工资前三高的员工
  8. hadoop编程-maven环境搭建
  9. Win10 64位+VS2015+OpenCV3.4.2重编译
  10. pyqt5 实现右键自定义_Python界面(GUI)编程PyQt5事件和信号
  11. oracle dba (适用,OracleDBA笔试题
  12. 毕设题目:Matlab图像评价
  13. selenium1、selenium2 示例代码(java版)
  14. Java远程连接数据库——远程连接MySQL数据库,操作和管理MySQL数据库
  15. 听完计算机知识讲座后感悟,计算机技能培训心得感想
  16. 三角形法则平行四边形法则
  17. 2014中韩大数据论坛发现大数据的价值
  18. 海康威视实习生面试总结
  19. ORAN专题系列-30:5G基站如何升级到O-RAN基站 - FHGW(FrontHaul Gateway)的时钟同步系统
  20. 离线语音蓝牙设计应用案例

热门文章

  1. 并发编程之 Java 内存模型 + volatile 关键字 + Happen-Before 规则
  2. 【线性表4】线性表的链式实现:静态表
  3. LinkedIn公司采用超大规模数据中心设计
  4. hibernate validate验证框架中@NotEmpty、@NotbBank、@NotNull的区别
  5. jquery实现动态五角星评分
  6. mvn本地生成jar包放在mvn项目依赖(将jar包传到本地仓库)
  7. latex 特殊符号
  8. python下处理win和linux分行符
  9. 【正一专栏】巴萨艰难收获一场平局
  10. 【Python-ML】SKlearn库特征抽取-KPCA