【笨鸟先飞】Java重新学习日记6---类的使用(2)

来源:互联网 发布:无敌邮件营销软件 编辑:程序博客网 时间:2024/05/16 17:40

关于类的使用,一些简单知识的整理,看看有什么比较常用的,以及在我的工作经历中,最常见遇到的场景,进行总结和梳理。

  上一章,回忆了关于类的3大组成部分的一些特征。下面我继续一边看书,一边回忆一些,类使用上的知识和以及场景。

 

  方法的重载和重写:对于初学者,两个名词容易搞混,实际上,它们两个是完全不同的逻辑。

  重载是指同一个类里面,有好几个名字相同的方法,和上一章,我举得构造器的例子是一样的。对于方法传入参数,也可以根据需要确定的参数不同,来进行一个嵌套。既可以某个方法全部使用默认参数,也可以,都使用定制参数,(类比上一章中,构造器例子)。

方法的重载是以传入参数来作为区分的,目前我知道的,需要用到方法重载的就是,有选择默认传入参数和定制传入参数差别的方法,进行重载。

 

方法的重写是源于继承,是子类的方法和父类不一样,于是子类重新写一个方法,称做方法的重写,@override用于表示一个方法是重写的。这是属于@相关的知识了,这里不展开学习。

 

方法中声明的变量:

方法中声明的变量在方法结束时就会消失,从节约内存的角度,变量要尽量在最小的范围,比如for循环的i就在for里面创建。而不是在类里面去创建一个i来循环。

但是,变量太小也不行,比如一个方法a里面的变量,需要在方法b里面使用,但是又不会在方法a通过调用方法b将参数传递过去,那这是办不到的。 因为方法内部初始化的变量,只能在方法a里面使用 ,方法b不能跨界调用。

在实际使用时,没预料到变量会被方法b使用时,可以就在方法a内创建,如果后续发现方法b需要使用,再将变量从方法a移动出来,使其在类里面被创建即可。

对于平凡的我们,很难一次就把代码写完美,定然是写好后,还要一步步修改,一步步整理,所以在初始化变量的时候,无需一次考虑完成。

 

If判断中比较的方法:

初学者的时候,最喜欢用 ==来进行判断,也学到了要用“==” 不能用“=

接下来是进阶

==是用来比较数据类型的。

对于String,则建议采用eqaule来比较。

 

类和对象的比较,instanceof是将对象和类进行比较的,这个功能又要回到面向对象编程的继承和多态,在传入参数的时候,某个父类及其所有子类,子类的子类,可以以相同的参数传入,但,实际传入的是不同的类。

android为例,android是面向手机编程的,编写的就是APP,里面的图片,包括文字(textView),图片(ImageView)等等,都属于view这个类型。那么,它传入的参数就是view,但是实际上,我们会通过instanceof,来看看传入的参数到底是什么类型,在进行相关操作。

Ifv instanceof textView{

内容1

}else ifv instanceof ImageView

{

内容2

}

 

instanceof 是在相对复杂的继承关系中会用到的一种方案,而对比类和对象,采用instanceof 是最好的方法。

 

 

单例模式,单例模式是一个非常舒服的模式,在一些控制类的对象,也就是一个类只创建一个对象,这个对象不需要创建出对象1对象2的时候,比如,一个网络带着几百个主机,那么主机这个类需要几百个对象,而网络只需要一个对象,特别是我们不希望创建出2个以上的网络,但是从使用目的上,每个主机都要获取网络对象的时候,单例模式就非常好了。

单例模式的结构:

Public static classA getInstance(){

Ifinstance == null{

instance = new classA ();

}

Return instance;

  }

 

这里代码的意思就是,

在别的地方调用这样,classA  a = classA.getInstance();

 

然后实质就是,各个主机都在调用服务器classA的而classA.getInstance()仅在第一次调用的时候,会instance = new classA ();创建对象,后面再调用就直接返回之前创建的instance了。

这样达到,每个主机都调用同一个网络。

 

 

 

匿名内部类,先说内部类,就是一个类A,只在一个类B之间使用。那么这个类A就创建成内部类,最常用的内部类是runnable

如果一个类很简单,且只创建一次对象,那么,匿名内部类则更是是首选。直接将类赋值给对象,runnable也是最常见的匿名内部类。

匿名内部类在实现通用接口也是很好用的,特别是android里面的onclick一类的listener

对象.post(new Runnable() {
    public void run() {
     内容1
        }
    }
});

 

这样就创建一个新的线程来运行内容1。 这个runnable就是一个匿名内部类。以及创建新线程的作用是异步操作,以及防止卡顿等,多线程相关知识不在此展开。

 

枚举类

是某种常见用法的简化编程代码,就像switchif .... else if ....else if的简化一样。回到之前讲到变量的修饰符时提到的用来作为判断的常量,在代码设计时是不建议直接使用数字来区分选择的内容,要用名字来代替数字。

例子:

Public static final int KEYBORAD=0;

Public static final int MOUSE=1;

Public static final int CPU=2;

以上3个是同类的常量,对于这种多个同类,使用到一起的常量,现在就建议使用enum来实现,

Public enum item{KEYBORADMOUSECPU  }

系统会自动去分辨这三个,不需要去赋值为012

 

如果仅仅一个常量,则不使用枚举类,枚举类还是针对有多个用在用一个地方作为分辨参数的。往往枚举类emunswitch会一起使用。

阅读全文
0 0
原创粉丝点击