java篇 之 多态
2018-9-28
多态:
重载也称为静态多态(静态在编译阶段就能确定)(动态是跟运行时挂钩)
尽量去选择关系轻的,降低耦合度(紧密度)
内聚:
减少与外界的联系,降低与其他对象和类的联系
对象与对象的关系:高内聚,低耦合
继承本身就是打破封装的(因为它要调用外界的东西)(封装是内敛的,阻止访问)(封装与继承是相互冲突的)
重写规则:
- 发生在有继承关系的类之间(同一类就是重载了)
- 相同的方法名,参数列表,返回类型
- 可见性(public,protected,private)不能被缩小
- 异常不能被放大
- 规则与c++中不一样
- 静态类型不能被重写
类型转换:
都是按地址空间大小解析
子类-->父类(隐式转换,自动截取,按父类地址空间大小解析,多出的部分截取不解析,但是当Person p = new Lawyer(“kb”,2);再转回子类时不会出错,但还是要instanceof语句)
经常用父类引用去引用子类对象!!!(左边是引用(p),右边是对象(lawyer))
父类-->子类(可能会有错,必须强制转换,按子类空间大小解析,(少的部分用乱码解析给子类,会有错),使用者自己承担问题,用instanceof语句)
if(p instanceof Lawyer)(可以转才执行下一句)
静态类型(永远不会变化)决定编译能否通过
动态类型,实际指向的类型(执行的时候可变)由动态类型决定的方法调用称之为多态
Byte b = (byte) 10;
b--- byte(静态类型永不会变)
10 ----int(动态类型)
多态:
同一类域,不同对象,相同行为,不同表现形式
成为多态的语法前提:
- 有继承层次(子类extends 父类 )
- 方法重写
- 等号左边的引用要一致,父类声明的变量去引用子类的对象
this:指向当前调用者(本身)谁用就是谁
方法重载的要求是什么?
方法名相同
参数列表不同(参数类型不同或者参数个数不同)
public class A{
public void test1(){
System.out.println("A test1");
}
}
public class B extends A{
public void test1(){
System.out.println("B test1");
}
public void test2(){
System.out.println("B test2");
}
public static void main(String[] args){
A a = new B();
a.test1();
a.test2(); //a的静态类型没有test2方法,所以编译不能通过,必须有, //b中才能重写,调用
}
}
编译运行后的结果是什么?为什么?
编译报错,变量a是A类型的,无法调用到test2方法,因为test2方法是B类中独有的
分析:a的静态类型是A,动态类型是B,首先静态编译,有test1方法,然后动态调用B中的test1,但是A中没有test2,编译报错
java篇 之 多态的更多相关文章
- 深度分析:理解Java中的多态机制,一篇直接帮你掌握!
Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...
- java中实现多态的机制是什么?
多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...
- Java面向对象之多态(来源于身边的案例)
2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...
- Java 中的多态,一次讲个够之接口实现关系中的多态
上文还没有写完,这一篇继续 Java 中的多态,一次讲个够之继承关系中的多态 https://www.cnblogs.com/qianjinyan/p/10824576.html 接口实现关系,和继承 ...
- JSON总结(java篇)
JSON总结(java篇一) JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于 ...
- 13、java中的多态
1,多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接收自己的子类对象.2,多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖. 3,多态的好处 多态的 ...
- [转]有哪些值得关注的技术博客(Java篇)
有哪些值得关注的技术博客(Java篇) 大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...
- java面向对象之 多态 Polymorphism
多态(Polymorphism):用我们通俗易懂的话来说就是子类就是父类(猫是动物,学生也是人),因此多态的意思就是:父类型的引用可以指向子类的对象. 1.多态的含义:一种类型,呈现出多种状态 主要讨 ...
- java异常处理、多态
第一:GC是什么? 为什么要有GC? 第二:垃圾回收的优点和原理.并考虑2种回收机制. 第三:垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 第 ...
随机推荐
- 组合数的计算以及组合数对p取余后结果的计算
前奏:统计 n! 中的所有质因子中pi的个数 普通方法:复杂度O(nlogn), 当n为10的18次方无法承受 // 复杂度O(nlogn), n为10的18次方无法承受 int cal(int n, ...
- 【HTML】如何在网页中屏蔽右键 ?
如何在网页中屏蔽右键 众所周知,要保护一个页面,最基础的就是要屏蔽右键.而现在网页上用得最多的是function click(),即下面这段代码: <script> function ...
- 【C语言】输入一个整数x并判断x是否存在于数组a中
#include<stdio.h> int main() { ] = { ,,,,,,,, };//数组初始化 printf("请输入要查找的数据:\n"); scan ...
- 对malloc和free和数据结构和算法的一些感触
当年2013.9.大一学c程序设计,因为当时还没有学数据结构,只学了程序设计,大学上的课真的是承上启下的不好,刚学到这里,就断了旋一样,对这个malloc和free一直很迷惑,这些狗玩意是干嘛,因为用 ...
- TNS-12545: Connect failed because target host or object does not exist
问题描述 $ lsnrctl startLSNRCTL for Linux: Version 12.1.0.2.0 - Production on 26-JUL-2017 09:53:42Copyri ...
- C#获取当前不同网卡对应的iP
C#获取当前不同网卡对应的iP: public string GetLocalIP() { IPAddress localIp = null; try { IPAddress[] ipArray; i ...
- 实用sql语句合集
1. 将选取A表的name字段 然后选择A表和B表,最后进行id相等比较 最终得到的是合集 $res = \DB::select("SELECT name FROM users,car_a ...
- 使用BeautifulSoup爬取汽车之家新闻
1 先select到改数据上层的标签,取第一个[0],然后attrs获取单标签里面的内容,或者get_text获取成对标签内文本2 find就是明确了标签之后,是唯一的,就可以使用find(标签名). ...
- python 请求服务器的本质
不同路由请求不同内容 ''' 根据url中不同路径返回不同内容 ''' import socket sk=socket.socket() sk.bind(("127.0.0.1", ...
- CentOS之service iptables stop 显示not loaded
停止firewalld服务停止防火墙,并禁用这个服务 sudo systemctl stop firewalld.servicesudo systemctl disable firewalld.ser ...