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方法设置为抽象方法

然后性质类继承后必须要重写实现抽象方法

 

 

posted @ 2022-07-17 17:01  次林梦叶  阅读(65)  评论(0)    收藏  举报