前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础-面向对象(五)

Java基础-面向对象(五)

作者头像
cwl_java
发布2019-11-12 13:08:30
3090
发布2019-11-12 13:08:30
举报
文章被收录于专栏:cwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/102953867

引用变量的两种类型:
  • 编译时类型(模糊一点,一般是一个父类)
  • 由声明时的类型决定。
  • 运行时类型(运行时,具体是哪个子类就是哪个子类)
  • 由实际对应的对象类型决定。
  • 多态的存在要有3个必要条件:
  • 要有继承,要有方法重写,父类引用指向子类对象
引用数据类型的类型转换
  • 子类转换为父类:自动转换
  • 上转型对象不能操作子类新增的成员变量和方法。
  • 上转型对象可以操作子类继承或重写的成员变量和方法
  • 如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。
  • 父类转换为子类:强制转换
  • (绝不是做手术,而是父类的真面目就是一个子类,否则会出现类型转换错误)
final关键字
  • final可以用来修饰变量,方法,类。
  • 修饰变量:变量一旦被初始化便不可改变,相当定义了一常量。
代码语言:javascript
复制
final int x=3;
x=4;
  • 修饰方法:final方法是在子类中不能被覆盖的方法
代码语言:javascript
复制
final returnType methodName(paramList){...}
final void eat() { … }
修饰类:final类是无法被任何类继承的。
final class finalClassName{ ... }
final class Person{ … }
抽象类
  • 为什么需要抽象类? 如何定义抽象类?
  • 是一种模版模式。抽象类为所有子类提供了一个通用模版,子类可以在这个模版基础上进行扩 展。
  • 通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计, 使子类之间更加通用。
  • 要点:
  • 抽象方法和抽象类均必须用abstract来修饰。
  • 抽象方法没有方法体,只需要声明不需实现。
  • 有抽象方法的类只能定义能抽象类
  • 相反抽象类里面的方法不一定全是抽象方法,也可能没有抽象方法。
  • 抽象类可以包含属性、方法、构造方法。
  • 抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。
  • 抽象类只能用来继承。
  • 抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽 象类
接口 interface
  • 为什么需要接口?接口和抽象类的区别?
  • 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专 业地实现了:规范和具体实现的分离。
  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你 是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是 坏人,则必须欺负好人。
  • 接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。
  • 项目的具体需求是多变的,我们必须以不变应万变才能从容开发,此处的“不变”就是“规 范”。因此,我们开发项目往往都是面向接口编程!
  • 接口相关规则
  • 接口中所有方法都是抽象的。
  • 即使没有显式的将接口中的成员用public标示,也是public访问类型的
  • 接口中变量默认用 public static final标示,所以接口中定义的变量就是全局静态常量。
  • 可以定义一个新接口,用extends去继承一个已有的接口
  • 可以定义一个类,用implements去实现一个接口中所有方法。
  • 可以定义一个抽象类,用implements去实现一个接口中部分方法。
Java与C++的对比
  • C++支持多重继承,Java支持单重继承
  • C++多重继承的危险性在于一个类可能继承了同一个方法的不同实现,会导致系统崩溃。 Java中,一个类只能继承一个类,但同时可以实现多个接口,既可以实现多重继承的效 果和功能,也避免的多重继承的危险性。
内部类

将一个类定义置入另一个类定义中就叫作“内部类”

  • 类中定义的内部类特点
  • 内部类作为外部类的成员,可以直接访问外部类的成员(包括private成员),反之则不行。
  • 内部类做为外部类成员,可声明为private、默认、protected或public。
  • 内部类成员只有在内部类的范围之内是有效的。
  • 用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的 访问权限。
  • 编译后生成两个类: OuterClass.class 和OuterClass$InnerClass.class
  • 内部类分类
  • 匿名内部类
  • 成员内部类
  • 静态内部类
  • 方法内部类
垃圾回收机制
  • 对象空间的分配:
  • 使用new关键字创建对象即可
  • 对象空间的释放:
  • 传统
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引用变量的两种类型:
  • 引用数据类型的类型转换
  • final关键字
  • 抽象类
  • 接口 interface
  • Java与C++的对比
  • 内部类
  • 垃圾回收机制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档