JAVA面向对象—–final关键字

1:定义静态方法求圆的面积
2:定义静态方法求圆的周长
3:发现方法中有重复的代码,就是PI,圆周率。
1:如果需要提高计算精度,就需要修改每个方法中圆周率。
4:描述一个变量
1:方法都是静态的,静态只能访问静态,所以变量也定义为静态的。
public static double PI=3.14;
1:如果定义为public后,新的问题,类名.PI=300; 改变了PI的值。
2:修改为private,修改为private后进行了封装,需要getset公共访问方法。
3:现有的知识不能解决这样的问题了。可以使用final
class Demo12 {
public static final double PI = 3.14; // 静态常量 public static double getArea(double r) {
return PI * r * r;
} public static double getLength(double r) {
return PI * r * 2;
} public static void main(String[] args) { // Demo12.PI=300; 无法为最终变量 PI 指定值
System.out.println(Demo12.PI); } }
5:使用final
1:final关键字主要用于修饰类、类成员、方法、以及方法的形参。
2:final修饰成员属性: 1:说明该成员属性是常量,不能被修改。
public static final double PI=3.14;
1:public :访问权限最大
2:static :内存中只有一份
3:final :是一个常量
4:常量名大写
5:必须初赋值。 2:使用类名.成员。修改该成员的值,报错。--常量不能被修改
1:基本数据类型,final使值不变
2:对象引用,final使其引用恒定不变,无法让其指向一个新的对象,但是对象自身却可以被修改。
3:该关键字一般和static关键字结合使用
1:常量可以优先加载,不必等到创建对象的时候再初始化。
4:final和static可以互换位置
5:常量一般被修饰为final
3:fianl修饰类:
1:该类是最终类,不能被继承。
1:将父类加final修饰,子类继承,就会报错。
2:查看api文档发现String类是final的。Integer类也是final的
1:为了防止代码功能被重写
2:该类没有必要进行扩展
4:final修饰方法:
1:该方法是最终方法,不能被重写
2:当一个类被继承,那么所有的非私有函数都将被继承,如果函数不想被子类继承并重写可以将该函数final修饰
3:当一个类中的函数都被修饰为final时,可以将类定义为final的。
class Father2{
final void eat(){
System.out.println("eating....");
}
} class Son2 extends Father2{
//该方法是最终方法,不能被重写
void eat(){
System.out.println("eating....");
}
}
class Demo12 { public static void main(String[] args) { // Demo12.PI=300; 无法为最终变量 PI 指定值
System.out.println(Demo12.PI);
Son2 s=new Son2();
s.eat(); }
    5:final关键字修饰形参
1:当形参被修饰为final,那么该形参所属的方法中不能被篡改。
2: 项目中主要用于一些只用来遍历未知数据的函数。将未知变量声明为final的。增强数据的安全性。
class Demo14 {

    public static void main(String[] args) {

        System.out.println();
String[] arr = { "think in java", "java就业教程", "java核心技术" }; print(arr); } // 该方法,打印书名。
public static void print(final String[] arr) {
//arr = null; ,无法重新赋值 for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
} }

10:思考

为什么子类一定要访问父类的构造函数呢

1:子类继承了父类的属性,如果要使用父类的属性必须初始化,创建子类对象,必须先初始化父类属性

必须调用父类的构造方法。

2:为什么调用父类无参的构造函数

设计java语言之时,只知道编译器会默认添加无参的构造函数,有参的无法确定。

但是可以通过super关键字显式调用父类指定构造函数。

3:为什么super()this()语句要放在构造函数的第一行

子类可能会用到父类的属性,所以必须先初始化父类。


【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧(要先登录CSDN账号哦 )】


—–乐于分享,共同进步!

—–更多文章请看:http://blog.csdn.net/duruiqi_fx


JAVA面向对象-----final关键字的更多相关文章

  1. JAVA面向对象-----super关键字

    JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...

  2. 聊聊Java的final关键字

    Java的final关键字在日常工作中经常会用到,比如定义常量的时候.如果是C++程序员出身的话,可能会类比C++语言中的define或者const关键字,但其实它们在语义上差距还是挺大的. 在Jav ...

  3. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  4. Java面向对象重要关键字

    面向对象过程接触的重要关键字:extends   super   this   final   static  extends 关键字用作继承功能,可以申明一个类是从另外一个类继承而来的,一般形式如下 ...

  5. java之final关键字

    final关键字(可以读不可以写.只读) 1.final的变量的值不能够被改变 ①.final的成员变量 ②.final的局部变量(形参) //意思是“实参”一旦传进我的方法里面,就不允许改变 2.f ...

  6. Java的final关键字详解

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  7. 面向对象---final关键字

    final 在java中表示的意思是最终,也称为完结器,可以用final关键字声明类.属性.方法,在声明时需要注意以下几点: 1.使用final声明的类不能有子类. 2.使用final声明的方法不能被 ...

  8. java中final 关键字的作用

    final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关 ...

  9. Java基础 -- final关键字

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...

随机推荐

  1. 以太坊如何估计计算gas?

    以太坊如何估计估算计算gas?Etherscan上transaction info中有个gas used by txn,结果跟remix给的结果以及geth中getTransactionReceipt ...

  2. burp的dns记录功能

    写个备忘. 先点copy复制url,然后生成的url就能用了. 一关就没了,比较鸡肋些,不适合持久的,适合马上就能见效果的那种.

  3. vi/vim下tab的长度修改

    默认下的长度是8,如果要想修改可以在根目录下新建'.vimrc'文件 里面的内容是: [root@localhost 09:06 ~]# cat .vimrc set tabstop=4 set sh ...

  4. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined)

    运气好,分到的房里我最先开始Hack C题,Hack了12个,听说F题沙雕莫队但我不会,最后剩不到15分钟想出E题做法打了一波结果挂了,最后虽然上分了但总有点不甘心. 最后A掉ABCD Hack+12 ...

  5. ubuntu 16.04常见错误--Could not get lock /var/lib/dpkg/lock解决

    我的博客 ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决 通过终端安装程序sudo apt-get install xxx时出错: E: Cou ...

  6. Linux学习之CentOS(十二)------磁盘管理之 磁盘的分区、格式化、挂载(转)

    磁盘分区.格式化.挂载磁盘分区    新增分区    查询分区    删除分区磁盘格式化    mkfs    mke2fs磁盘挂载与卸载    mount    umount 磁盘的分区.格式化.挂 ...

  7. vmware 12中安装MAC OS X Lion 10.7

    下载并安装vmware.    下载并安装MAC补丁.    创建虚拟机.    设置ISO文件.    开启虚拟机.    安装vmware tools. 1. 下载并安装vmware.我是直接在腾 ...

  8. Go 语言结构

    Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello ...

  9. django之数据库orm

    一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sq ...

  10. PHP 完整表单实例

    PHP - 在表单中确保输入值 在用户点击提交按钮后,为确保字段值是否输入正确,我们在HTML的input元素中插添加PHP脚本, 各字段名为: name, email, 和 website. 在评论 ...