JAVA面向对象-----final关键字
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关键字的更多相关文章
- JAVA面向对象-----super关键字
JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...
- 聊聊Java的final关键字
Java的final关键字在日常工作中经常会用到,比如定义常量的时候.如果是C++程序员出身的话,可能会类比C++语言中的define或者const关键字,但其实它们在语义上差距还是挺大的. 在Jav ...
- Java面向对象-static关键字、静态方法与普通方法、静态成员变量
Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...
- Java面向对象重要关键字
面向对象过程接触的重要关键字:extends super this final static extends 关键字用作继承功能,可以申明一个类是从另外一个类继承而来的,一般形式如下 ...
- java之final关键字
final关键字(可以读不可以写.只读) 1.final的变量的值不能够被改变 ①.final的成员变量 ②.final的局部变量(形参) //意思是“实参”一旦传进我的方法里面,就不允许改变 2.f ...
- Java的final关键字详解
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- 面向对象---final关键字
final 在java中表示的意思是最终,也称为完结器,可以用final关键字声明类.属性.方法,在声明时需要注意以下几点: 1.使用final声明的类不能有子类. 2.使用final声明的方法不能被 ...
- java中final 关键字的作用
final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关 ...
- Java基础 -- final关键字
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...
随机推荐
- Struts2--二次提交
在Struts2中,使用token的方式来防止二次提交.并且在默认的拦截器栈中提供了两个默认拦截器Token Interceptor和Token Session Interceptor.必须要在for ...
- [BZOJ 3329]Xorequ
Description 题库链接 给出 \(n\) ,分别求 \(\leq n\) 和 \(\leq 2^n\) 的满足方程 \[x\oplus 3x=2x\] 的正整数解个数. \(1\leq n\ ...
- [BZOJ 5071]小A的数字
Description 小A成为了一个数学家,他有一串数字A1,A2...An 每次可以进行如下操作,选择一个数字i(1<i<=n),将(Ai-1,Ai,Ai+1) 变为(Ai-1 + A ...
- bzoj 3191: [JLOI2013]卡牌游戏
Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X ...
- ●HDU 1695 GCD
题链: http://acm.hdu.edu.cn/showproblem.php?pid=1695 题解: 容斥. 莫比乌斯反演,入门题. 问题化简:求满足x∈(1~n)和y∈(1~m),且gcd( ...
- [SPOJ962]Intergalactic Map 拆点+最大流
Jedi knights, Qui-Gon Jinn and his young apprentice Obi-Wan Kenobi, are entrusted by Queen Padmé Ami ...
- BZOJ3817 Sum(类欧几里得算法)
设$t=\sqrt r$,原题转化为$\sum_{x=1}^n(4*\lfloor\frac{tx}2\rfloor-2*\lfloor tx\rfloor+1)$考虑如何求$\sum_{x=1}^n ...
- 毕业设计-JSP论文盲审系统
之前做的一款jsp的论文盲审系统,ssh框架的,学生提交论文,系统管理员将论文分配给教员,教员在不知学员是谁的情况之下,对论文进行打分,然后提交给系统,最后系统发布成绩,供学员查看. 整体做的还不错, ...
- python3 字符串str 教程
字符串可以用单引号或双引号来创建. Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用. 例: var1 = 'Hello World!' var2 = "Pyth ...
- jqGrid移动滑块时冻结首列和第二列例子
js代码如以下代码:在initAllGrid函数colModel1加入属性设置:frozen:true:然后在_initGrid('task_con_grid_div',colModel1)函数里面加 ...