面向对象编程 包 继承 多态 组合 接口

包 :包是组织类的一种方式。使用包的主要目的是保证类的唯一性.
一般使用小写字母 采用倒叙
将类放到包中: 规则
1.在文件的最上方加上一个 package 语句指定该代码在哪个包中
2.包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式
3.包名要和代码路径相匹配.
4.如果一个类没有 package 语句, 则该类被放到一个默认包中
常见的系统包 :
1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
2. java.lang.reflect:java 反射编程包;
3. java.net:进行网络编程开发包。
4. java.sql:进行数据库开发的支持包。
5. java.util:是java提供的工具程序包。(集合类等) 非常重要
6. java.io:I/O编程开发包

继承: 为了代码的复用
基类 只能访问自己的成员或方法
子类/ 派生类 继承 父类/ 基类/ 超类
子类继承父类: 除构造方法外所有的东西 并 帮助父类进行构
如果构造子类对象 必先构造父类

语法规则:
1.使用 extends 指定父类.
2.Java 中一个子类只能继承一个父类 (而C++/Python等语言支持多继承).
3.子类会继承父类的所有 public 的字段和方法.
4.对于父类的 private 的字段和方法, 子类中是无法访问的.
5.子类的实例中, 也包含着父类的实例. 可以使用 super 关键字得到父类实例的引用.

super: super(): 调用父类的构造方法 必须在第一行
三种用法: super.func() super.data super(构造方法)

Java 中对于字段和方法共有四种访问权限:
1. private: 类内部能访问, 类外部不能访问
2.默认(也叫包访问权限): 类内部能访问, 同一个包中的类可以访问, 其他类不能访问.
3.protected: 类内部能访问, 子类和同一个包中的类可以访问, 其他类不能访问.
4.public : 类内部和类的调用者都能访问
在这里插入图片描述

final: 密封类 不能被继承 密封方法 被其修饰与放哪无关
final 关键字的功能是 限制 类被继承
我们平时是用的 String 字符串类, 就是用 final 修饰的, 不能被继承.

组合:
和继承类似, 组合也是一种表达类之间关系的方式, 也是能够达到代码重用 的效果
组合表示 has - a 语义
继承表示 is - a 语义

多态:
向上转型: 父类引用子类对象 且父类只能调用父类自己的方法
[向上转型的三种方式:
直接赋值
方法传参
方法返回
运行时绑定 --》多态

重写: 方法名相同 参数列表相同 返回值相同 Override
注意:
1. 方法不可以为private
2.子类的方法权限 一定要大于父类的方法权限
3.不能是静态方法

重载:方法名相同 参数列表不相同 返回值不做要求 Overload

重写与重载的区别:
在这里插入图片描述

this与super的区别:
在这里插入图片描述 super: super 表示获取到父类实例的引用
1.使用了 super 来调用父类的构造器 必须在第一行
2.使用 super 来调用父类的普通方法
三种用法: super.func() super.data super(构造方法)

发生多态:运行时多态
1.继承-》 父类需要引用子类对象
2.通过父类的引用 去调用子类和父类同名的覆盖的方法
父类只能调用自己的方法和属性
class对象 存储在方法区
方法表 在编译期间 已形成
多态的好处:
1) 类调用者对类的使用成本进一步降低. 封装是让类的调用者不需要知道类的实现细节. 多态能让类的调用者连这个类的类型是什么都不必知道, 只需要知道这个对象具有某个方法即可.
2) 能够降低代码的 “圈复杂度”, 避免使用大量的 if - else
3) 可扩展能力更强.

向下转型: 必须先向上转型 将父类给子类

构造方法内 可以发生运行时绑定

抽象类:包含抽象方法的类
抽象类存在的最大意义就是为了被继承
抽象类被继承后 要重写抽象方法
抽象类a继承抽象类b 那么a可以选择重写或不重写抽象类b中的方法
抽象类重写 那么继承后不需要重写
注意事项
1) 抽象类不能直接实例化. 要想使用, 只能创建该抽象类的子类. 然后让子类重写抽象类中的抽象方法.
2) 抽象方法不能是 private 的
3) 抽象类中可以包含其他的非抽象方法, 也可以包含字段.
这个非抽象方法和普通方法的规则都是一样的, 可以被重写, 也可以被子类直接调用

接口:接口是抽象类的更进一步. 抽象类中还可以包含非抽象方法, 和字段. 而接口中包含的方法都是抽象方法, 字段只能包含 静态常量.
1.关键字 interface
2.不能有具体的实现 默认是抽象方法
3.接口方法尽量简洁
4.接口中成员变量 public static final
5.接口不可以被实例化

类与接口关系-》实现 implements 必须重写

接口与接口关系-》继承 可以继承多个 并包涵他们的功能 可以向上转型

抽象类与接口的区别:
核心区别: 抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写), 而接口中不 能包含普通方法, 子类必须重写所有的抽象方法.
在这里插入图片描述
自定义类型进行排序 必须重写接口

字符串比大小用: compareto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值