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

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拓展来的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Java知识汇总.pdf" 是一份Java编程语言相关的知识总结文档。Java是一种广泛应用于软件开发的高级编程语言,具有跨平台性、面向对象和可移植性等特点。 这份"Java知识汇总.pdf" 可能包含了Java语言的基础知识,如Java语法、数据类型、控制流等;也可能包含了面向对象编程的概念和使用,如类和对象、继承、封装和多态等;此外,还可能涉及Java的核心API和常用类库,如字符串处理、文件操作、集合框架、多线程编程等;还有可能包含一些Java开发工具的使用,如Eclipse、IntelliJ IDEA等。 这份知识汇总文档可能会从入门到进阶的角度,逐步展开Java的相关知识点,帮助读者系统地学习和掌握Java编程语言。它可能会通过示例代码、图表、解析和实践练习等多种方式,帮助读者理解和应用Java的相关概念和技巧。 如果要充分利用"Java知识汇总.pdf",读者可以按照文档的目录结构和学习建议,逐一阅读和学习每个章节,完成相应的练习和编程实践,加深对Java编程语言的理解和实际应用能力。同时,读者还可以积极参与Java程序员的交流社区,分享问题、解答问题,与其他开发者共同进步。 总之,"Java知识汇总.pdf" 是一份系统、全面的Java编程语言知识总结文档,可以帮助读者学习和掌握Java编程语言,并在实际的软件开发中应用Java的相关技术和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值