快速导航

  • 1.继承
  • 2. super和this的区别:
    • 2.1 二者的区别
    • 2.2 注意点:
  • 3 重写和重载的区别
  • 4 访问修饰限定符
    • 4.1 private
    • 4.2包访问权限
    • 4.2 protected
  • 5 多态
  • 6 编译时绑定
  • 7 向下转型
  • 8 抽象类知识点总结
  • 9 接口知识点总结

1.继承

  • 继承(extends): 对共性的一个抽取,使用extends关键字来实现;(语法:A extends B)
  • A : 子类,派生类
  • B:父类,基类,超类;
  • 意义:为了代码的复用;

注意:
1.子类继承了父类,那么子类在构造的时候,需要先帮助父类来进行构造。需要在子类的构造方法当中,使用super关键字来显示的调用父类的构造方法;

2. super和this的区别:

2.1 二者的区别

1.属性的区别:
this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。
2.方法的区别:
this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父类中的方法。
3.构造的区别:
this调用本类构造,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。
4.其他区别:
this表示当前对象。super不能表示当前对象
A、this. 变量和super.变量
this.变量 调用的当前对象的变量;
super.变量 直接调用的是父类中的变量。
B、this(参数)和super(参数)方法
this(参数) 调用(转发)的是当前类中的构造器;
super(参数) 用于确认要使用父类中的哪一个构造器。

2.2 注意点:

1)在对拥有父类的子类进行初始化时,父类的构造方法也会执行,且优先于子类的构造函数执行;因为每一个子类的构造函数中的第一行都有一条默认的隐式语句super();
2)this() 和super()都只能写在构造函数的第一行;
3)this() 和super() 不能存在于同一个构造函数中。第一,this()和super()都必须写在构造函数的第一行;第二,this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过;
4)this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)。

(原文链接:https://blog.csdn.net/weixin_44502804/article/details/90611291)

3 重写和重载的区别

重载: 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。

重写:重写(Override)是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写,不过子类函数的访问修饰权限不能小于父类的;若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法,如需父类中原有的方法则可使用 super 关键字。

重载规则:必须具有不同的参数列表; 可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。

重写规则:参数列表必须完全与被重写的方法相同,否则不能称其为重写;返回类型必须一直与被重写的方法相同,否则不能称其为重写;访问修饰符的限制一定要大于等于被重写方法的访问修饰符;

重载与重写是 Java 多态性的不同表现。

重写是父类与子类之间多态性的表现,在运行时起作用(动态多态性,譬如实现动态绑定)
 
 而重载是一个类中多态性的表现,在编译时起作用(静态多态性,譬如实现静态绑定)。

补充 :Java 的构造方法是不能被重写
 重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,所以 Java 的构造方法是不能被重写的。而重载是针对同一个的,所以构造方法可以被重载。

4 访问修饰限定符

4.1 private

private 中的成员只能被类的内部使用

4.2包访问权限

什么都不写,只能在同一个包里面访问

4.2 protected

不同包,必须是子类才能访问

对于类的调用者来说, protected 修饰的字段和方法是不能访问的
对于类的 子类 和 同一个包的其他类 来说, protected 修饰的字段和方法是可以访问的

总结:
private: 类内部能访问, 类外部不能访问
默认(也叫包访问权限): 类内部能访问, 同一个包中的类可以访问, 其他类不能访问.
protected: 类内部能访问, 子类和同一个包中的类可以访问, 其他类不能访问.
public:类内部和类的调用者都能访问

问题:父类的private修饰的成员变量是否被继承了?
答:不是 ! 因为private修饰的父类成员变量子类也不可以访问到。

5 多态

1.向上转型:父类引用 引用子类对象
2.运行时绑定:通过父类引用 调用父类和子类同名的覆盖方法。
覆盖/覆写/重写:
a.方法名称相同
b.参数列表相同【参数的个数+参数的类型】
c.返回值相同【特殊:返回值也可以是协变类型】
注意:简单列举:
1.static方法不能重写
2.private修饰的方法不能重写
3.final修饰的方法不能重写
4.子类方法的访问权限要大于等于父类的访问权限

6 编译时绑定

编译时绑定是通过函数的重载实现的。编译的时候,会根据你给的参数的个数和类型,在编译期,确定你最终调用的一个方法。

7 向下转型

向下转型是不安全的。用instanceof修饰的

8 抽象类知识点总结

  1. 包含抽象方法的类,叫做抽象类
  2. 抽象方法就是一个没有具体实现的方法,被abstract修饰。
  3. 抽象类是不可以被实例化new的。
  4. 因为不能被实例化,所以,这个抽象类,其实只能被继承。
  5. 抽象类当中也可以包含和普通类一样的成员和方法。
  6. 要是一个普通类,继承了一个抽象类,那么这个普通类当中,需要重写这个抽象类的所有的抽象方法。
  7. 抽象类最大的作用,就是为了被继承。
  8. 一个抽象类A,如果继承了一个抽象类B,那么这个抽象类A,可以不实现抽象父类B的抽象方法。
  9. 结合第8点,当A类再次被一个普通类继承后,那么A和B这两个抽象类当中的抽象方法,必须被重写。
    10.抽象类不能被final修饰,抽象方法也不可以被final修饰。

9 接口知识点总结

  1. 使用interface来修饰的。格式为 interface IA{}
  2. 接口当中的普通方法,不能有具体的实现。一定要实现的话,只能通过关键字default来修饰这个方法。
  3. 接口当中可以有static的方法。
  4. 接口里面的所有的方法都是public的。
  5. 抽象方法默认是 public abstract 的。
  6. 接口是不可以被通过关键字new来实例化的。
  7. 类和接口之间的关系是通过implement实现的。
  8. 当一个类实现了一个接口,就必须要重写接口当中的抽象方法。
  9. 接口当中的成员变量,默认是public static final修饰的。
  10. 当一个类实现了一个接口之后,重写这个方法的时候,这个方法前面必须加上public。
  11. 一个类可以通过关键字extends继承一个抽象类或者普通类,但是只能继承一个类。同时,也可以通过implements实现多个接口,接口与接口之间用逗号隔开就好。
  12. 接口和接口之间可以使用extends来操作他们的关系,此时,这里面意为:拓展。
  13. 一个接口B通过extends来拓展另一个接口C的功能。此时当一个类D通过implements实现这个接口B的时候,此时重写的方法不仅仅是接口B的抽象方法,还有他从接口C拓展来的方法。

【Java】面向对象编程语法知识点总结相关推荐

  1. Java面向对象编程语法知识点

    目录 一.封装 二.继承 1.继承的作用 2.继承的表示方法 3.隐式继承private 4.继承的权限 三.super关键字 1.super修饰属性 2.super修饰构造方法 3.super修饰普 ...

  2. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  3. 八、Java面向对象编程(类、对象、方法、重载、可变参数、作用域、构造器、this本质)

    文章目录 Java面向对象编程(类.对象.方法.重载.可变参数.作用域.构造器.this本质) 一.类与对象 1. 类与对象的引出 2. 使用现有技术解决 3. 现有技术解决的缺点分析 4. 类与对象 ...

  4. java面向对象编程精讲

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.包 1.1导入包中的类 1.2静态导入 1.3将类放到包中 1.4包的访问权限控制 1.5常见的系统包 二.继承 ...

  5. Java面向对象编程——抽象类和接口

    Java面向对象编程--抽象类和接口 定义类的过程就是抽象和封装的过程,而抽象类与接口则是对实体类进行更高层次的抽象,进定义公共行为和特征. 抽象类: 如果一个类没有足够的信息去描述一个具体的对象,那 ...

  6. java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super

    目录点击跳转 包 包的命名方法 导入包中的类 系统包的介绍 **注意事项** 继承 基础知识 构造方法 **基础语法** `protected`修饰符 组合 `this`和`super`关键字 `th ...

  7. 孙卫琴:我为什么要写《Java面向对象编程》

    孙卫琴:我为什么要写<Java面向对象编程> 特约作者:孙卫琴 策划 & 设计 & 制作:李大微 当<精通Struts>和<精通Hibernate> ...

  8. java面向对象编程基础

    java面向对象编程基础 前言:什么是java 是咖啡飘香的清晨 - 是斯坦福校园意浓情深 - 是James的思想睿智 是剁手党双十一挥舞的利刃 是大数据云计算驰骋的平台 - 是ATM上吐出的钞票 - ...

  9. 5.Java面向对象编程

    文章目录 05 Java面向对象编程 1. 面向过程与面向对象比较 2. 类和对象 2.1 对象的属性和方法 2.2 类的属性和方法 2.3 定义一个类 2.4 创建和使用对象 2.5 对象和类的总结 ...

最新文章

  1. Dataframe花样切片~(Python)
  2. WebCast学习链接
  3. eShopOnContainers 知多少[9]:Ocelot gateways
  4. 更改linux子系统软件源为国内镜像
  5. 《Go语言程序设计》读书笔记(十)反射
  6. Microsoft VS又要级了
  7. 有幸和一位企业家聊天,他白手起家
  8. 数据库数据变大会导致查询慢_是什么导致数据库变慢?
  9. atm取款流程测试_盘点2020年软件测试新手必看的技术面试指南(下)
  10. 思维导图软件列表(mind mapping software list)
  11. Qt qlabel 设置字体、大小、加粗等
  12. tomcat8设置JAVA_HOME路径
  13. ISO18000-6B和ISO18000-6C(EPC C1G2)标准的优点区别
  14. 软件测试的技术(互联网篇)
  15. 目前大多数计算机工作原理采用的是,计算机应用基础复习题2016有答案
  16. 201771010112罗松《面向对象程序设计(java)》第十三周学习总结
  17. ADB命令获取手机应用安装包
  18. 全排列问题(AcWing 823. 排列)
  19. linux设置网关和ip
  20. 学软件开发都要学哪些基础内容?

热门文章

  1. 爬虫之常见的反爬手段和解决思路
  2. python有哪些关键字?让他自己“吐”出来!
  3. 计算机视觉方向简介 | 图像拼接
  4. 一个小改动,CNN输入固定尺寸图像改为任意尺寸图像
  5. 来聊聊可形变卷积及其应用
  6. 机器学习算法常用指标总结
  7. 原理+代码实战 | 双目视觉中的极线校正
  8. 浅谈tidb事务与MySQL事务之间的区别
  9. python中的enumerate 函数(编号的实现方式)
  10. checkstyle安装使用