Java编程思想学习笔记(七)
2019-03-19 19:33
120 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Irisohohoh/article/details/88670677
复用:1.组合 2.继承 3.代理
组合:has-a
继承:is-a
组合还是继承一个清晰的判断方法:是否需要从新类向基类进行向上转型
- final
1. final +数据——final “不会改变的”
(1)基本数据类型
final+基本数据类型=常量 定义时必须赋值或者在构造函数里赋值(使用前总是被初始化)
static final+基本数据类型=编译器常量 全部用大写单词间用_隔开
(2)引用(包括数组,数组也是一个引用)
引用指向一个对象后无法在改变它指向另一个对象,但引用所指向对象的具体成员变量值是可以改变的。
private Value v1=new Value(11);//v1.i=11; v1.i=13;//可以 v1=new Value(13);//不可以
(3)参数
无法在方法中更改参数值和参数引用所指向对象
void f(final int i ){i++;}//不能改变值
void g(final Value v){ v=new Value(3);}//不能改变引用
2.final+方法——“不会被覆盖”
子类在继承父类时,final 的方法会被继承下来,但是不能覆盖。
final和private
class First{ private final void f() { System.out.println("First.f()"); } } class Second extends First{ //@Override 用来检查覆盖是否正确 如果存在Override则会报错 public final void f(){ //super.f(); System.out.println("Second.f()"); } } public class TestFinal { public static void main(String[] args) { First first=new First(); //first.f(); Second second=new Second(); second.f(); } }
继承只是继承接口,private只对自己可见(相当于是一段内部代码),子类不继承,所以更谈不上覆盖,因此f只是同名的函数而已。
3.final +类——“禁止继承”
类被final 修饰后,类内的所有方法都被隐式的final,也可以在方法前加上final,但没意义。
- 初始化顺序
第一次创建类的对象或者调用静态方法时,加载类;
初始化静态成员(先基类再子类);
当创建对象时,先分配空间,初始化所有成员变量;
调用构造函数(先基类后子类)
相关文章推荐
- Java编程思想学习笔记——2、一切都是对象
- Java编程思想学习笔记——枚举类型
- java编程思想学习笔记(一)——BigInteger和BigDecimal
- Java编程思想学习笔记——注解
- java编程思想学习笔记(序)
- Java编程思想学习笔记-使用显式的Lock对象
- java编程思想学习笔记——File类
- java编程思想学习笔记(javadoc)
- Java编程思想学习笔记(一)
- JAVA编程思想学习笔记——第一章 对象导论
- java编程思想学习笔记(循环中的break和continue)
- Java编程思想学习笔记
- Java编程思想学习笔记(1)---对象导论
- Java编程思想学习笔记——对象导论
- Java编程思想学习笔记——初始化与清理
- java编程思想学习笔记(2)--一切皆对象
- Java编程思想学习笔记——流程控制,初始化与清除
- Java编程思想学习笔记——初始化与清理(二)
- Java编程思想学习笔记(3)--操作符
- Java编程思想学习笔记——访问权限控制与类的复用