Java程序员面试宝典-------(1)--(15)

1.static的作用

static为静态变量或类变量,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象

2.final的作用

     final类

      不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且          确信这个类不会再被扩展,那么就设计为final类。 final方法不能被子类的方法覆盖,但可以被继承。

使用final方法的原因有二:

第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。 编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
       
final变量(常量)
用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变!
final修饰的变量有三种:静态变量、实例变量和 局部变量,分别表示三种类型的常量。

  3.override 和overload

override(重写,覆盖) 
1、方法名、参数、返回值相同。 
2、子类方法不能缩小父类方法的访问权限。 
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 
4、存在于父类和子类之间。 
5、方法被定义为final不能被重写。 

overload(重载,过载) 
1、参数类型、个数、顺序至少有一个不相同。   
2、不能重载只有返回值不同的方法名。 
3、存在于父类和子类、同类中。
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。 
4.组合与继承的区别
最生动的比方: 
 继承是说“我父亲在家里给我帮了很大的忙”。   
 组合是说“我请了个老头在我家里干活”。

  组合是在一类类中引用另一个类。生成另一个类的实例。   
  而继承只是继承了父类的变量和方法。   
  区别:   
  使用组合可以用到另一个类中私有的变量和方法,而继承就不可以用到父类的私有的变量和方法了   
  他们都有各自的好处,要灵活的运用。

5.clone的作用

clone方法是用来复制一个对象。不同于“=”。
对于值类型的数据是可以通过“=”来实现复制的。但是对于引用类型的对象,“=”只能复制其内存地址,使对象的引用指向同一个对象,而不会创建新的对象。clone则可以创建与原来对象相同的对象。
6.前置++与后置++
i++是先取i的值做计算,再自加;
++i是先自加,再取i的值做计算。
7.内部类
有4中内部类:常规内部类、静态内部类、局部内部类、匿名内部类。
1》常规内部类: 常规内部类没有用static修饰且定义在在外部类类体中。
  1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法。
  2.在常规内部类中可以直接用内部类创建对象
2》静态内部类
静态内部类:与类的其他成员相似,可以用static修饰内部类,这样的类称为静态内部类。静态内部类与静态内部方法相似,只能访问外部类的static成员,不能直接访问外部类的实例变量,与实例方法,只有通过对象引用才能访问。
由于static内部类不具有任何对外部类实例的引用,因此static内部类中不能使用this关键字来访问外部类中的实例成员,但是可以访问外部类中的static成员。这与一般类的static方法想通
3》局部内部类:在方法体或语句块(包括方法、构造方法、局部块或静态初始化块)内部定义的类成为局部内部类。
  局部内部类不能加任何访问修饰符,因为它只对局部块有效。
  1.局部内部类只在方法体中有效,就想定义的局部变量一样,在定义的方法体外不能创建局部内部类的对象
  2.在方法内部定义类时,应注意以下问题:
   1.方法定义局部内部类同方法定义局部变量一样,不能使用private、protected、public等访问修饰说明符修饰,也不能使用static修饰,但可以使用final和   abstract修饰
   2.方法中的内部类可以访问外部类成员。对于方法的参数和局部变量,必须有final修饰才可以访问。
   3.static方法中定义的内部类可以访问外部类定义的static成员
4》.匿名内部类:定义类的最终目的是创建一个类的实例,但是如果某个类的实例只是用一次,则可以将类的定义与类的创建,放到与一起完成,或者说在定义类的同时就创建一个类
  以这种方法定义的没有名字的类成为匿名内部类。
8.二维数组的表达方式
数据类型 数组名[整常量表达式][ 整常量表达式]={ 初始化数据 };
9.接口与抽象
如果一个类中含有抽象方法那么这个类就是抽象类 abstract 只能用来修饰方法和类
接口是指一个方法的集合 接口中所有方法都没有方法体,在语言接口是通过interface来实现的。
接口和抽象类异同:
1》都不能被实现
2》接口的实现类和抽象类的子类都只有实现了接口的方法和 抽象类中的方法才能 被实现
a》接口只有被定义其方法不能在接口实现‘而抽象类可以有定义与实现
b》接口被实现,抽象类被继承
c》接口用于是实现比较常见的功能,抽象类更倾向于充当公共类
10成员方法、类方法、构造方法
类包括成员变量和方法两部分。成员变量表示类的属性,一数据域的形式表达,方法是数据的操作的定义。
在JAVA中,方法只能作为类的成员,也称为成员方法。方法操作类所定义的数据,以及提供对数据的访问的代码。大多数情况下,程序的其他部分都是通过类的方法和其他类的实例进行交互的。
在类中,除了变量外的都是成员方法。
方法中有一种是对成员变量进行初始化的,称为构造方法。构造方法之外的就是一般的方法了吧。
所以说成员方法分为构造方法和一般的方法。
构造函数是一种特殊的函数,用来在对象实例化时初始化对象的成员变量
构造函数必须与类的名字相同,且不能有返回值。

11.方法的重写

/*方法重写(一般多用在继承上)
       定义:它是指子类和父类的关系,子类重写了父类的方法。    两个方法返回值、方法名、参数列表必须完全一致!
       出现原因:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。*/
 
12.方法的调用

方法一、被调用方法声明为static ,可以在其他方法中直接调用

方法二、被调用方法,没被static修饰,不是静态方法。调用时需要通过类的实例化进行调用

13.方法的重载

重载关心的只是参数,有参无参,参数类型不同,参数数量不同,不同类型的参数顺序不同,都可以实现方法的重载。

(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。

重载Overloading是一个类中多态性的一种表现。

(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

(3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

14.this

this用来标识成员变量指向实例对象。区分形式参数和成员变量。

15.方法的覆盖

就是方法的重写


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值