JAVA菜鸟入门篇 - 继承VS组合、final关键字 (十六)
来源:互联网 发布:闹钟提醒软件 编辑:程序博客网 时间:2024/05/30 22:51
一、继承VS组合
继承我们十四章节说过啦,大家可以看看,现在我们来看看组合
组合:将(继承中)父类当做一个属性变量放在子类(相对于继承而言,没有实现extends)中。
- 上面的通过在Audi类中增加一个Car属性虽然也复用了代码,但是不合逻辑不容易理解
- 比如说:哺乳动物是动物,但是绝对不能说哺乳动物包含动物
- 计算机类 ,主板类。可以通过在计算机类中增加主板属性来复用主板类的代码!
- 计算机包含主板,同样不能说计算机是主板。
<span style="font-size:18px;">/** * 测试组合 * @author dell * */public class Animal2 {String eye;public void run(){System.out.println("跑跑!");}public void eat(){System.out.println("吃吃!");}public Animal2(){super();System.out.println("创建一个动物!");}public static void main(String[] args) {Bird2 b = new Bird2();b.run();b.animal2.eat(); //利用实例化Bird2的对象b,调用b中的属性变量Animal2中的eat()方法}}class Bird2 {Animal2 animal2=new Animal2(); //原本Bird继承Animal2类,现在为了讲解组合的关系public void run(){ //run()与Animal2类中的run()方法不再是重写的关系animal2.run();System.out.println("我是一个小鸟!!");}/** * Bird2类默认继承Object类,super()方法调用的是Object类的无参构造器方法 */public Bird2(){super();System.out.println("建一个鸟对象");}}</span>显示结果:
创建一个动物!
建一个鸟对象
跑跑!
我是一个小鸟!!
吃吃!
从建模的角度来看,继承与组合是不同的概念;
从代码复用的角度来看,它们之间是可以互相取代的!
二、final关键字
修饰变量:
- 常量,初始化之后不能再被修改;
修饰方法:
- 该方法不可被子类重写。但是可以被重载
修饰类
- 修饰的类不能有子类,不能被继承。比如:Math、String
1.修饰变量:被final修饰的 变量就是常量,所以在写的时候一般采用大写
<span style="font-size:18px;">final int MAX_VALUE= 200; //常量,初始化之后,<span style="font-family: Arial, Helvetica, sans-serif;">MAX_VALUE值就不能修改,否则会报错误:Syntax error on token "Invalid Character", ; expected</span></span>2.修饰方法
<span style="font-size:18px;"><span style="white-space:pre"></span>public /*final*/ void run(){ //final加到方法前面,意味着该方法不能被子类重写!System.out.println("跑跑!");}public void run(String str){ //这里形参str没有具体应用到,仅仅实现以下重载 System.out.println("实现run()方法的重载!");}</span>
3.修饰类
<span style="font-size:18px;">public /*final*/ class Animal { //final修饰类则说明,这个类不能被继承!public void run(){ System.out.println("跑跑!");}}class Bird extends Animal {public void run(){super.run();System.out.println("我是一个小小小小鸟,飞呀飞不高");}}</span>如果final修饰类,修饰的类不能有子类,不能被继承。否则会报错误:Illegal modifier for the class Animal; only public, abstract & final are permitted
本文参考:非常感谢北京尚学堂高琪老师!
0 0
- JAVA菜鸟入门篇 - 继承VS组合、final关键字 (十六)
- 初学Java,final关键字(十六)
- 初学Java,final关键字(十六)
- JAVA菜鸟入门(8) Java的Final关键字
- java复用类(组合、继承,代理,final关键字,初始化顺序) 知识点的总结
- Java入门(四)final关键字
- JAVA菜鸟入门篇 - static关键字 (十三)
- JAVA菜鸟入门篇 - super、this关键字 (十五)
- JAVA菜鸟入门篇 - Java基本数据类型常用包装类(二十六)
- 学习总结1[java](final、继承和组合)
- Java入门 final关键字使用
- JAVA 学习模块十二: Final 关键字 以及 继承(下)
- JAVA-代码块、继承、final关键字
- java代码块,继承,final关键字简述
- 《java入门第一季》之面向对象(final关键字)
- Java学习10:继承VS组合
- java提高篇(十四)-----关键字final
- java提高篇(十四)-----关键字final
- 在我的小芭比上安装yum和apt遇到的翻译手打的好累
- CSS 第一课
- linux学习笔记一(linux发展史及基本命令)
- shell编程入门之shell介绍
- 接口--interface
- JAVA菜鸟入门篇 - 继承VS组合、final关键字 (十六)
- HDU 1312 -- Red and Black(dfs)
- maven安装问题
- 普通平衡树 离散化
- 【J2SE快速进阶】——向上转型及其内存分析
- Ubuntu通过有线路由器上网
- Qt元对象表机制与MFC消息映射机制
- Vs2013在Linux开发中的应用(36):Milestone-0.1.0
- [数学][第二阶段-简单数学题][HDOJ-2057]进制转换