java----main方法,代码块,final关键字,抽象类
《main方法》

在idea这个编译器中传值可以:



《代码块》



《代码块的使用细节》
《static代码块》

类加载有一个很重要的特点:
一个类对象,一般只会被加载一次:

上面的结果为:

也说明了一个类对象被加载一次后,不管是new 新对象,访问static成员,都不会在加载了
《static与普通的调用顺序》


《总结调用顺序》

理解方式:
1.首先是继承,一定都是加载完父类后在加载子类
2.其次static成员,是在类加载时就完成的,比普通成员早很多
3.代码块和属性的速度>构造方法的速度
《访问权限》

但是也要注意顺序:

这时cnt不能用,因为还没有加载起来

而这个可以用
《final关键字》



注意在final与static搭配使用时,调用这个成员,不会导致类的加载,从而达到只是调用一下这个成员的目的,提高效率

注意这里static代码块中的语句没有被输出
《抽象类》
《抽象类的作用》

而写成抽象类,这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用。
《抽象类的介绍》




《实际案例》
比如我想要完成如下任务:
设计一个综合性的形状计算器。功能为:对一组不同的形状(梯形、三角形、圆形、正方形)对象,能正确识别形状类型,显示其周长、面积和其它属性。例如输出信息为:
类型:圆形,周长=XXX,面积=XXX,半径=XXX 或是
类型:梯形,周长=“无法计算”,面积=XXX,上底=XXX 下底=XXX 高=XXX
/*------------------------------------分析--------------------------------------------------*/
要做到这一点,首先我需要一个父类----Shape类,表示形状类
然后不管是梯形,三角形,还是圆形这些类等都要继承这个类,
因为只有继承这个类,对于各种形状对象如:梯形,三角形,还是圆形这些对象才有形状和识别形状的可能
否则单独对于某个形状对象去设置形状,然后在形状计算器中用if去判断,那不得了,if语句都会写死,太多了

因为对于每一个类型对象,都要打印出其面积,周长,所以有getArea与getPerimeter方法
然后对于每一个形状类都继承Shape,然后重写getArea与getPerimeter方法

到这里为止好像完成了,但是这一块是不够好的,因为我们因为对于每一个形状类都有自己的面积与周长计算方法,所以为了运行
Shape shape=new Circle(10);shape.getArea();这样的语句,在Shape中必须写上getArea方法,但是我并不知道写啥
所以直接写了个返回0,但是这样可能会出现就面积打印出0的情况,这是我们不希望的

则最好的方法是:将getArea与getPerimeter方法设置为抽象方法
然后性质类继承后必须要重写实现抽象方法


浙公网安备 33010602011771号