本文共 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/