java面试第三天

类和对象:

类:主观抽象,是对象的模板,可以实例化对象----具有相同属性和行为的对象的集合。

习惯上类的定义格式:

package xxx;

import xxx;

public class Xxxx{

属性 ······;

构造器 ······;

方法 ······;

}

区分实例变量以及类变量,两者都有初始值,或在定义时候初始化或者在构造函数中初始化,而局部变量没有初始值,必须定义时候初始化。

定义属性:实例变量

格式:[ 修饰符 ]  类型 变量名  [ = ? ]

实例变量定义在类中但在任何方法之外。

实例变量有默认值:各种各样的0。(同数组)

实例变量的作用域至少在本类内部,受访问控制符的限制。

在重合作用域,实例变量和局部变量允许有命名冲突,“局部优先”。

定义方法:

格式: [ 修饰符 ]  返回类型 方法名( 参数列表 ) [ throws  异常 ] { ······ }

java中所有参数都是值传递。

当没有值返回时,返回类型必须被定义为void。

返回类型必须与方法名相邻,其他修饰符可以调换位置。

构造器:

在创建对象的过程中调用的方法。

构造器没有返回类型。

构造器的名字与类名相同。

格式为:[ 修饰符 ]  类名( 参数列表 ){  },修饰符可以是private、 protected、 default、private

在一个对象的生成周期中构造器只用一次,由系统自动调用,不允许手工调用。

程序员没有提供一个构造器,系统会自动提供一个无参的构造器。

获得对象的方式:

通过new(在堆空间中申请分配空间),new 类名(),可以通过这种形式或的一个对象,这时的对象是无法使用,必须把他的地址存放进一个对象变量才能够使用。

例如 :

Car c=new Car();

注意:

最好在写类时提供一个无参的构造器。

默认是自带一个无参构造器,但如果手动写了一个带参数的构造器,必须加上一个无参构造器。

this关键字:

this是个隐式参数,代表当前对象;

publie class Student{

private String name;

public void setName(String name){

this.name=name;             //this.name为当前对象的成员变量

}

}

如果某个构造方法的第一个语句具有形式this( ··· ),那么这个构造方法将调用同一类中的其他构造方法。

注意:

在构造器中this(...)必须放在该构造器的第一行。

this不能出现在静态方法里面

类、对象、实例三者的关系:

类:是对象的模板,可以实例化对象

对象:类的个体

实例:实现的对象

student s;

s=new student();

其中 Student为类,s为对象,new Student()为实例,s赋值后也是实例了。

方法重载:

方法名相同,参数表不同,不考虑返回值类型(但最好还是使返回类型一致)。

编译器根据参数,选择一个方法,如果没有完全匹配的,对于参数表采用“向上就近匹配原则”,但不允许模棱两可。

方法重载屏蔽了一个对象的同一类方法由于参数不同所造成的差异。

封装:

类的属性加private修饰符,来限制只能够在类的内部进行访问,有效的保护数据。

对于类中的私有属性,要对其给出一对方法getXxx(),setXxx()访问私有属性,保证对私有属性的操作的安全性。

方法公开的是方法的声明,即只须知道参数和返回值就可以调用该方法,隐藏方法的实现的细节。

一个对象和外界的联系应当通过一个统一的接口,应当公开的公开,应当隐藏的隐藏。

继承:

父类到子类是从一般到特殊的关系。

泛化:将不同子类中的共性抽象成父类的过程。

特化:在原有父类的基础上加入一些个性的过程。

原则:父类放共性,子类放个性。

继承的关键字:extends

Java只支持单继承:一个类最多只有一个直接的父类。

方法覆盖:

方法名:相同

参数表:相同

访问限制符:相同或者更宽

返回值类型:相同或者子类返回的类型是父类返回的类型的子类(在JDK5.0以后)

抛出的异常:不能比父类更宽。

super关键字:

super()表示调用父类的构造器

super()也和this()一样必须放在方法的第一句

super()和this()不能同时出现

super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性

在子类的构造器中如果没有指定调用父类的哪一个构造器,那么就会调用父类的无参构造器,即super()

注意:

父类的构造器不能被子类继承

方法和属性可以被继承,权限不限制能否继承过来,限制的是能否直接访问

即私有继承,虽然子类不能直接访问,但子类依旧拥有。

先构造父类,后构造子类,先this后super

多态:

多态分为两种:编译时多态和运行时多态。

编译时类型:主观概念,把它看作什么。

运行时类型:客观概念,实际它是什么。

例:Animal a=new Dog();

指着狗问,这个动物是什么?

运行时多态的三原则:

对象类型不变。

只能对对象调用编译时类型中定义的方法。

在程序的运行时,根据对象的运行时类型,找覆盖后的方法来调用。(运行时动态类型绑定)

强制类型转换: 一定没有新对象生成。(父类的引用赋值给子类的引用需要进行强制类型转换)

关键字:instanceof

用法:引用  instanceof  类名    判断这个引用所指向的对象是否属于这个类。

用在强制转换之前,避免类型转换异常。

if(a instanceof Dog){

Dog d=(Dog)a;

}

多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

时间: 2025-01-04 02:52:34

java面试第三天的相关文章

java面试第三弹

1.两电脑都在同一个网络环境中,A 电脑访问不到 B 电脑的共享文件.此现象可能是哪些方面所导致?怎样处理?     首先要确定是否在同一个工作组内,然后看看是否有防火墙之类的,最后确定文件是否已经共享 2.事务如何使用?写个Demo实现在一个事物中,新增和更新同时操作? beginTrans 用于开启一个事务,RollbackTrans用于回滚事务,CommitTrans用于提交所有事务处理结果,即确认事务处理.     dome: create database aaa --创建一个数据库

Java面试(三)

1  java中Exception 和 Error 区别 都是Throwable的子类.RuntimeException继承自Exception. Error和RuntimeException及其子类是未检查异常:其他异常是受检查异常. Exception:需要捕获或者需要处理的异常.用于用户程序可以捕获的异常. Error:定义了不期望被用户程序捕获的异常(系统崩溃,虚拟机错,内存不足,方法调用栈溢出,比如StackOverFlowError, OutOfMemoryError).系统级的错误

Java面试准备之JVM详细研究三(类加载机制)

类加载过程 一个类从编写完成后,编译为字节码之后,它要装载进内存有七个阶段: 加载 => (验证-> 准备-> 解析)=> 初始化=> 使用=> 卸载 括号中的三个步骤可以整合成为 “连接”步骤.其中的步骤并不是一个阶段结束,一个阶段才开始的.只是说他们的开始阶段基本遵循此顺序(解析阶段更是可能在使用的时候才发生,目的是配合动态绑定),这些阶段都是互相交叉的混合式进行的,通常会在一个阶段执行过程中调用或激活另一个阶段. 1.加载 ”加载“的过程是”类加载“过程的一个阶段

春节过后就是金三银四求职季,分享几个Java面试妙招,轻松搞定HR!

春节过后就是金三银四,分享几个Java面试妙招,轻松搞定HR!2020年了,先祝大家新年快乐!今年IT职位依然相当热门,特别是Java开发岗位.软件开发人才在今年将有大量的就业机会.春节过后,金三银四求职季到来,下面教你8个"妙招",希望能帮你顺利面试成功.1.知道如何写算法如果你申请的是软件工程师的工作,那么显然你需要知道如何编码.写代码脚本其实与写算法来解决软件问题略有不同.用人单位可能会提出这样的问题,"写一个算法,可以从链表中找到某个元素,并将此元素挪到列表末尾.&q

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求

转:最近5年133个Java面试问题列表

最近5年133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我初入职场的时候,类似于 Vector 与 Array 的区别.HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在.如今,你将会被问到许多 Java 程序员都没有看过的领域,如 NIO,

java 面试 -- 4

Java面试知识点总结 本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有一定的Java基础:若您初涉Java,可以通过这些问题建立起对Java初步的印象,待有了一定基础后再后过头来看收获会更大).本文的问题列表来自于http://www.nowcoder.com/discuss/3043,在此感谢原作者的无私分享:) 1. Java中的原始数据类型都有哪些,它们的大小及对应

Java 面试-- 1

JAVA面试精选[Java基础第一部分] 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对于那些正打算找工作JAVA软件开发工作的童鞋们来说,当你看到这份题目的时候,你应该感动很幸运,因为,只要你把题目中的内容都搞懂了,在笔试的时候就可以游刃有余,通过面试只有半步之遥了,笔试只能反映你的JAVA技能.不管你是面试各个级别的JAVA工程师.架构师.还是项目经理,这个系列文章都是你最宝贵的资

[转载]java面试中经常会被问到的一些算法的问题

Java面试中经常会被问到的一些算法的问题,而大部分算法的理论及思想,我们曾经都能倒背如流,并且也能用开发语言来实现过, 可是很多由于可能在项目开发中应用的比较少,久而久之就很容易被忘记了,在此我分享一下在面试中经常被问到的一些基本的算法,也当做一次知识的巩固. 排序算法的一些特点: * 排序算法的分类如下:* 1.插入排序(直接插入排序.折半插入排序.希尔排序):* 2.交换排序(冒泡泡排序.快速排序):* 3.选择排序(直接选择排序.堆排序):* 4.归并排序:* 5.基数排序.* * 关于