1. 需要存在方法重写

1.4多态的优劣势


  1. 优势
  • 在多态形式下,右边对象可以实现组件化切换,业务功能也随之改变,便于扩展和维护。可以实现类与类之间的解耦

  • 实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,可以传入一切子类对象进行方法的调用,更能体现出多态的扩展性与便利

  1. 劣势
  • 多态形式下,不能直接调用子类特有的功能。(编译看左边!!)

  • 因为父类中没有子类独有的功能,所以代码在编译阶段就直接报错了

1.5引用类型自动类型转换


《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

我们先来看基本数据类型的转换

  1. 小范围类型的变量或者值可以直接赋值给大范围类型的变量

  2. 大范围类型的变量或者值必须强制类型转换给小范围类型的变量

引用数据类型转换的思想是一样的

  1. 父类类型的范围 > 子类类型的范围

  2. Animal > Cat

  3. 子类类型的对象或者变量可以自动类型转换赋值给父类类型的变量

Animal a = new Cat();

1.6引用类型的强制类型转换


  • 父类类型的变量或者对象必须强制类型转换成子类类型的变量,否则报错!

  • 强制类型转换的格式:

  • 类型 变量名称 = (类型)(对象或者变量)

Animal a = new Wolf();

// 把动物类型的变量a转换为真实的狼类型

Wolf w = (Wolf) a;

1.7多态下类型转换异常问题研究


  • 有继承/实现关系的两个类型就可以进行强制类型转换,编译阶段一定不报错

  • 但是在运行阶段可能出现:类型转换异常 ClassCastException

  • 建议在进行强制类型转换之前先判断变量的真实类型,再强制类型转换(instanceof)

Animal a1 = new Cat();

// Wolf w1 = (Wolf) a1; //编译阶段没有报错 在运行阶段可能出现类型转换异常

if(a1 instanceof Cat){

// 如果a1 属于猫类型,执行抓老鼠

Cat c1 = (Cat) a1;

c1.catchMouse();

}else if(a1 instanceof Wolf){

// 如果a1 属于狼类型,执行抓羊

Wolf w1 =(Wolf) a1;

w1.catchSheep();

}

1.8内部类


  1. 什么是内部类?

答:定义在一个类里面的类就是内部类

  1. 内部类有什么用?

答:可以提供更好的封装性,内部类有更多的权限修饰符,封装性有了更多的控制

  1. 内部类的分类
  • 静态内部类

  • 实例内部类(成员内部类)

  • 局部内部类

  • 匿名内部类(重点)

1.8.1静态内部类(了解)

  1. 什么是静态内部类?

答:有static修饰,属于外部类本身,会加载一次

  1. 静态内部类的成分

答:

  • 类中有的成分它都有,静态内部类属于外部类本身,只会加载一次

  • 所以它的特点与外部类是完全一样的,只是位置在别人里面而已

  1. 静态内部类的访问格式

答:外部类名称.内部类名称

  1. 静态内部类创建对象的格式

答:外部类名称.内部类名称 对象名称 = new 外部类名称.内部类构造器

  1. 静态内部类中是否可以直接访问外部类的静态成员?

答:可以的,外部类的静态成员只有一份,可以被共享

  1. 静态内部类中是否可以直接访问外部类的实例成员?

答:不可以,外部类的实例成员必须用外部类对象访问

请仔细理解下方代码,理解语法即可,静态内部类几乎不用!!!

public class InnerClass {

public static void main(String[] args) {

//外部类名称.内部类名称 对象名称 = new 外部类名称.内部类构造器

Outter.Inner in = new Outter.Inner();

in.setName(“张三”);

in.setAge(12);

in.show();

}

}

class Outter{

private double salary;

public static int age1 = 15;

// 静态内部类: 有static修饰,属于外部类本身,只会加载一次

public static class Inner{

private String name;

private int age;

public Inner() {

}

public Inner(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public void show() {

System.out.println(name +“是” + age + “岁”);

System.out.println(age1);

// 15

// System.out.println(salary); 报错

}

}

}

1.8.2实例内部类(了解)

  1. 什么是实例内部类?

答:无static修饰的内部类,属于外部类的每个对象,跟着对象一起加载

  1. 实例内部类中的成分

答:实例内部类中不能定义静态成员,其他的都可以定义,可以定义常量

  1. 实例内部类的访问格式

答:外部类名称.内部类名称

  1. 实例内部类创建对象的格式

答:外部类名称.内部类名称 对象名称 = new 外部类构造器.new 内部类构造器

  1. 实例内部类中是否可以直接访问外部类的静态成员?

答:可以的,外部类的静态成员可以被共享访问

  1. 实例内部类中是否可以访问外部类的实例成员?

答:可以的,实例内部类属于外部类对象,可以直接访问当前外部类的实例成员

public class InnerClass {

public static void main(String[] args) {

// 实例内部类属于外部类对象。实例内部类的宿主是外部类对象!

Outter.Inner in = new Outter().new Inner();

in.show();

}

}

class Outter{

public static int age = 11;

private String salary;

// 实例内部类: 无static 修饰,属于外部类的对象

public class Inner{

private String name;

// 不能在实例内部类中定义静态成员!!

// public static String schoolName; 报错

// 可以定义常量

public static final String schoolName = “黑马”;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

// 实例方法

public void show(){

System.out.println(age);

System.out.println(salary);

}

}

}

1.8.3局部内部类(了解)

  1. 什么是局部内部类?

答:在方法,构造器,代码块,for循环中定义的内部类,就是局部内部类

  1. 局部内部类的成分

答:只能定义实例成员,不能定义静态成员,可以定义常量

  1. 局部内部类基本没啥用

public class InnerClass {

static {

// 局部内部类

abstract class A{

}

}

public static void main(String[] args) {

// 局部内部类

class A{

}

}

public static void test(){

// 局部内部类

class Animal{

}

// 局部内部类

class A extends Animal{

}

}

}

1.8.4匿名内部类(重点)

  1. 什么是匿名内部类?

答:就是一个没有名字的局部内部类

  1. 匿名内部类的作用

答:匿名内部类可以简化代码,是开发中常用的形式

  1. 匿名内部类的格式

new 类名|抽象类|接口(形参){

方法重写

}

  1. 匿名内部类的特点

答:1.匿名内部类是一个没有名字的内部类

​ 2.匿名内部类一旦写出来,就会立即创建一个匿名内部类的对象返回

​ 3.匿名内部类的对象的类型相当于是当前 new 的那个类型的子类类型

Java核心编程总结(三、多态与内部类),java就业班百度网盘相关推荐

  1. 《C算法.第1卷,基础、数据结构、排序和搜索(第三版)》电子书下载 -(百度网盘 高清版PDF格式)

    作者:(美)塞奇威克 著,周良忠 译 出版日期:2004-6-1 出版社:人民邮电出版社 页数:537 ISBN:9787115122766 文件格式:PDF 文件大小:34.83 MB <C算 ...

  2. 博学谷java百度网盘_博学谷javaee在线就业班2020网盘

    一:为什么要学多线程 应付面试 :多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的. 了解并发编程:实际工作中很少写多线程的代码,这部分代码一般都被人封装起来了,在业务中使用多线程的机会也不 ...

  3. 【免费】Linux命令行与Shell脚本编程大全 第3版 PDF全本 21MB 百度网盘下载

    2019年7月12日更新 链接: https://pan.baidu.com/s/17RDrepFf-GI427I7k3jBcQ 提取码: qk8k 网上的大部分都要积分什么的,很麻烦.这本很清晰,分 ...

  4. java metronic_metronic下载-metronic官方版 v4.5.2 官方版[百度网盘资源] - 安下载

    Metronic是一个响应和多用途的管理主题,由Twitter Bootstrap 3.3.5框架提供支持,Metronic可用于任何类型的Web应用程序:自定义管理面板,管理仪表板,CMS,CRM, ...

  5. Java是动态语言吗?从《Java核心编程》探索真知

    目录 一.Java是动态语言吗? 1.动态语言 2.静态类型 3.<Java核心编程>中探索~~为什么Java可以称之为"准动态语言"? 二.了解ClassLoader ...

  6. Java核心编程总结(五、线程池与死锁),淘汰了80%的Java面试者

    | Java核心编程总结(八.IO输入输出流)

  7. [Java并发编程(三)] Java volatile 关键字介绍

    [Java并发编程(三)] Java volatile 关键字介绍 摘要 Java volatile 关键字是用来标记 Java 变量,并表示变量 "存储于主内存中" .更准确的说 ...

  8. java网络编程的三要素

    1.IP地址,是设备的标识.Java学习笔记http://www.mobiletrain.org/note/java/ 要想让网络中的计算机能相互通信,必须为每台计算机指定一个标识号,通过此标识号来指 ...

  9. Java压缩技术(三) ZIP解压缩——Java原生实现

    转载自   Java压缩技术(三) ZIP解压缩--Java原生实现 解压缩与压缩运作方式相反,原理大抵相同,由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInp ...

最新文章

  1. 滴,这周的福利已掉落,镁客君请你免费骑摩拜
  2. 选购商用计算机任务书,计算机网络综合实习任务书-.doc
  3. Springmvc的handler method参数绑定常用的注解
  4. angular6的响应式表单
  5. 标准梯度—lhMorpGradient
  6. mysql事务中怎么更改空值_MySQL事务
  7. 交通灯程序设计C语言,基于MCS-51的交通灯程序设计(c语言控制直行左转,包含程序)...
  8. springboot application.properties server.port配置小问题
  9. Bootstrap3 按钮组插件
  10. 涉嫌内幕交易?美国SEC对马斯克展开调查
  11. Vue.js 源码分析(九) 基础篇 生命周期详解
  12. 蓝桥杯 ADV-121 算法提高 高精度加法
  13. 自定义数字格式字符串_部分分隔符和条件格式
  14. matlab 电压矢量开关,电压空间矢量研究及Matlab仿真
  15. 概率论入门:概率分布
  16. 最通俗PLC教程—源自Koyo光洋PLC自学总结(2)
  17. 江城子/乙卯正月二十日夜记梦——苏轼
  18. 一个好用的hibernate泛型dao
  19. 如何了解百度竞价调价技巧
  20. C语言写的一个贪吃蛇小游戏(windows系统)

热门文章

  1. day07 资产泄露CMS识别Git监控SVNDS_Store备份
  2. PyQt5 控件学习(一个一个学习之QObject)
  3. 计算机测控技术就业方向,测控技术与仪器专业是干什么的
  4. 引用 软件开发公司管理手册
  5. java实现12306查票_[转]java抓取12306信息实现火车余票查询示例firefox
  6. 英语48个音标的快速记忆法
  7. codeblocks使用教程
  8. 1.5 新一代信息技术
  9. Henway —— 小鸡过路游戏
  10. 滚动轮播图+滚动轮播图定时器的添加(还原lol首页的轮播图)