| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> ObjectOrientedProgramming - 面向对象的编程(包、继承、多态的一部分:向下/向下转型,重写) -Java -> 正文阅读 |
|
[Java知识库]ObjectOrientedProgramming - 面向对象的编程(包、继承、多态的一部分:向下/向下转型,重写) -Java |
文章目录
包包 (package) 是组织类的一种方式.
代码案例(打印数组):
附图(缺少的那句代码,作用就是导入一个包。从包中拿出你需要的类)图1图2? 经由上面一个简单的程序附图2,引申出一格问题: 什么是 package 和 import?
? 在java里,包肯定不止一个,那么就意味着 一个 类,可能有在不同包里都有它,只不过实现的功能不同。选择对应包中的类,编译器会自动帮你导入所需包中的类例1例2? 既然知道包是怎么导入它当中的类,那么该如何使用? new它!实例1(导入(包中的类)情况)? 实例2(不导入(包中的类)情况)? 前者都是导入包中的类,在程序中就可以使用该类。那我们只导入包呢?在程序中我们还可以使用它里面的类吗?
? 我们再来看看 用特殊的方法 导入一个类
示例? 疑问:util包中 有很多类,难道 “ impor java.util.*; ” 是一下子全部 都导入吗?
? 那么 “ impor java.util.*; ” 和 “ impor java.util.具体的类名; ” ,那个更好?
拿 前面 例子中 Date 举例,
import static - 静态导入
实例
? 使用包的主要目的是保证类的唯一性
? 在此之前,我们先来看包是如何创建的(包名 必须小写)
把类放进包里
? 使用我们自己创建的包中的类? 包的访问权限控制
? 常见的包(系统包)1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。 ? 面向对象的基本特征:封装:不必要公开的数据成员和方法,使用private关键字进行修饰。意义:安全性。继承:对共性的抽取。使用extends关键字进行处理的。 意义:可以对代码进行重复使用。先来通过代码了解一些知识点,为了我们了解继承做铺垫? 讲这些共有的特性抽离出来
? 继承的语法规则基本语法
总结使用 extends 指定父类. super关键字的用法,this的用法可以看这篇文章 类与对象·子类继承父类,子类在内存中的情况特殊情况 ( 子类的实例中, 也包含着父类的实例. 可以使用 super 关键字得到父类实例的引用 )
? protected 关键字
? 访问权限图( private | default | protected | public)
private: 类内部能访问, 类外部不能访问 ? 同一个包中的同一个类同一个包中的不同类不同包的子类(类的继承需要两个类都是public的类)? 不同包的非子类上面这些情况中,调用的成员变量都是有public修饰的,也就是说 只要我们 字段/属性/成员变量是被public 所修饰的,就意味着在哪里都能使用。? 我们主要还是讲 protected,因为其他的,在前面都讲了。同一个包中的同一个类同一个包中的不同类
不同包的子类(前面protected 和 public几乎一样,但下面两点就是public 和 protected 的区别)不同包的非子类? 总结
? final 关键字
? 组合
? 多态 - 这里 只是铺垫,开个头,讲一个部分。
? 向上转型:
什么情况下会发生向上转型?1. 直接赋值
? 2. 函数的参数? 3.作为函数的返回值? 动态绑定(多态的基础)当子类和父类中出现同名方法的时候, 再去调用会出现什么情况呢? ? 动态绑定的条件:1.父类 引用 子类的对象 ? 重写 /覆盖 / 覆写1.方法名相同 代码1? 代码2 (动态绑定)? 再来通过以下图片 来进一步了解 多态绑定
? 重写的注意事项方法不可以是 static 方法子类的访问修饰限定的访问范围一定要大于等于 父类 的 访问修饰限定
private 方法 不能被重写方法 被 final修饰 ,也不能被重写方法的返回值不一样,也能被重写( 协变类型 )特殊情况? 重写 与 重载的区别重载可 通过这篇文章进行参考方法的使用 1.方法名相同 ? 编译时多态:利用重载来实现多态,在同一个类中定语多个同名的不同方法来实现多态? 向下转型
但是不建议大家去写 向下转型! 处理方法 再介绍一个坑(在构造方法中调用重写的方法)本文结束 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:16:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |