博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习(9)类的四大特性2之继承(final)
阅读量:4074 次
发布时间:2019-05-25

本文共 1958 字,大约阅读时间需要 6 分钟。

 * @笔记:
 * 一、接口 感悟
 *    继承是多态得以实现的基础,从字面上理解,多态就是一种类型表现出多种状态,将一个方法调用同这个方法所属的主体(也就是对象和类)关联起来叫做绑定,分前期绑定和后期绑定两种。
 *    (1)前期绑定:在程序运行之前绑定,由编译器和连接程序实现。又叫做静态绑定。比如static方法和final方法。注意,这里也包括private方法,因为他是隐式的final方法。
 *    (2)后期绑定:在运行时,根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动态绑定,或者运行时绑定,除了前期绑定外的所有方法都属于后期绑定。
 *    前期后期判断方法: 在编译时候能确定的是前期绑定,否则为后期绑定。
 *    多态是在后期绑定这种机制上实现的,多态给我们带来的好处是消除了类之间的耦合关系,使程序更容易拓展。
 *    例:在这个例子中,新增一种类型汽车的销售。
            interface Car {
                String getName();//获取汽车的名称
                int getPrice();//获取汽车的价格
            }
            //大众   --  新增汽车
            class DaZhong implements Car{
                public String getName(){
                    return "DaZhong";
                }
                public int getPrice(){
                    return 150000;
                }
            }
            
            //汽车出售店
            class CarShop{
                //售车收入
                private int money = 0;
                //卖出一部车
                public void sellCar(Car car){
                    System.out.println("车型:" + car.getName() + ",单价为:" + car.getPrice());
                    //增加卖出车的收入
                    money += car.getPrice();
                }
                //售车总收入
                public int getmoney(){
                    return money;
                }
            }
 *    
 * 二、final
 *    1.概念
 *      中文意思:最后的,最终的;
 *      final 可以修饰变量或者方法。
 *    2.应用:
 *      (1)当不希望父类的某个方法被子类覆盖时(override),可以用final关键词修饰。
 *      (2)当不希望类被继承时,可以用final修饰。
 *      (3)当不希望类中的变量被修改时,采用final关键字。但变量必须赋初值。
 *    3.注意事项
 *      (1)final修饰的变量又叫常量,一般用xx_xx_xx命名。
 *      (2)final修饰的变量必须在定义时赋值,并且以后不能再赋值。
 *    4.final什么时候用?
 *    
 *      (1)类不会被其他类继承。                //类不被继承
 *      (2)因为安全的考虑,类的某个方法不允许覆盖。//方法不被覆盖
 *      (3)某些变量的值固定不变。              //值不被修改
 *      

 

package com.shuiyixin;public class learnJ_9final {	/**	 * @作者:shuiyixin	 * @日期:2018.01.31	 * @内容:final	 * 	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		Bbb bb = new Bbb();		bb.sendMes1();	}}class Aaa9{	int a;//不给赋值的时候,默认为0。	//给变量final修饰,则表示不可以被修改,不可以被覆盖。这个变量必须赋初值。	final float PI = 3.1415f;	//给方法final修饰,则表示不可以被修改,不可以被覆盖。	final public void sendMes(){		System.out.println("发送消息。");	}};class Bbb extends Aaa9{	//final public void sendMes(){   提示错误:Cannot override the final method from Aaa	final public void sendMes1(){		//PI ++;  //提示错误:The final field Aaa.PI cannot be assigned		System.out.println("发送消息:\n\tPI = " + PI + ", a = " + a);   			}};final class Ccc{	public void sendMess(){		System.out.println("我是 Ccc,我不能被继承。");	}};

转载地址:http://kyyni.baihongyu.com/

你可能感兴趣的文章
discuz 3 头像显示不成功
查看>>
手动添加uc应用及其 提示notelist表缺少appX字段的处理方法
查看>>
Discuz!X3.2 uc_server密码正确无法登录的解决方法
查看>>
discuz登录admin后台老是自动跳出来
查看>>
discuz限制用户查看购买记录
查看>>
MFC画图
查看>>
一个GDI双缓冲类
查看>>
InvalidateRect函数
查看>>
无法定位 xxxx 与动态链接库 avcodec-xx.dll上
查看>>
【ffmpeg + VS2010】编译包含libavutil\common.h后出现找不到inttypes.h的问题
查看>>
可编辑的 ListCtrl 封装整合
查看>>
ffmpeg AVFrame 插入静音帧
查看>>
路由器有线桥接的两种方式异同
查看>>
windows xp部署iis+php+mysql
查看>>
怎么卸载Apache_pn服务-PHPnow使用问题
查看>>
apache 虚拟主机建立多站点,并在adsl网络发布
查看>>
OpenSees开发(二)源码分析——平面桁架静力有限元分析实例
查看>>
div+ajax 实现网页框架布局
查看>>
开放有限元分析计算平台介绍
查看>>
Discuz/X3.1去掉标题中的Powered by Discuz!以及解决首页标题后的"-"
查看>>