首页 > 代码库 > Java面试宝典

Java面试宝典

①1.抽象:把现实中复杂的问题抽象成简单的问题一般来说是对象。抽象包括两个部分一个是数据抽象,一个是过程抽象。例如:一个人定义为Person类,人有的属性是年龄(age),性别(gender),这些抽象出来是数据抽象。人的一些吃饭,睡觉的行为,抽象为方法,为过程抽象。

2.继承:继承是从已有类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能拓展新的行为。新的类为原始类的派生类(子类),原始类称为(父类)。

3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已经定义的接口。面向对象的概念始于这个基本概念,即现实世界被描绘成完全自治,封装的对象。这些对象通过一个受保护的接口访问其它对象。

 1  1 封装的简单例子: 2  2 先来个例子看看; 3  3 public class Man 4  4 { 5  5 //对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性 6  6 private String name; 7  7 private int age; 8  8 private Woman wife; 9  9 //对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄10 10 public void setWife(Woman wife)11 11 {12 12 this.wife = wife;13 13 }14 14 public String getName()15 15 {16 16 return name;17 17 }18 18 public void setName(String name)19 19 {20 20 this.name = name;21 21 }22 22 public int getAge()23 23 {24 24 return age;25 25 }26 26 public void setAge(int age)27 27 {28 28 this.age = age;29 29 }30 30 }31 31 public class Woman32 32 {33 33 //属性封装34 34 private String name;35 35 private int age;36 36 private Man husband;37 37 //方法封装38 38 public String getName()39 39 {40 40 return name;41 41 }42 42 public void setName(String name)43 43 {44 44 this.name = name;45 45 }46 46 public int getAge()47 47 {48 48 return age;49 49 }50 50 public void setAge(int age)51 51 {52 52 this.age = age;53 53 }54 54 public Man getHusband()55 55 {56 56 return husband;57 57 }58 58 public void setHusband(Man husband)59 59 {60 60 this.husband = husband;61 61 }62 62 }63 63 /**64 64 * 仔细看就会发现,Man类没有提供getWife的方法,这是因为男人不想让自己的妻子被外界访问,65 65 *66 66 * 直接下来呢,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法,67 67 *68 68 * 比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改69 69 *70 70 * 同时对一些改对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法71 71 *72 72 * 外界是不能带到Man类的wife属性的73 73 *74 74 */75 75 上面那例子可能没有突出封装的好处,下面来个超简单的表达下:76 76 public class Show77 77 {78 78 public static void show(String str)79 79 {80 80 System.out.println(str);81 81 }82 82 }83 83 上面就是对 System.out.println();的封装。84 84 调用的时候 :85 85 public class Use86 86 {87 87 public static void main(String[] args)88 88 {89 89 Show.show("封装");90 90 }91 91 }92 92 这样用的时候就不用使:System.out.println("封装");
View Code

4.多态:是指不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名的问题。

多态有两种表现形式:重载和覆盖

重载(overload),是发生在同一类中。与父类子类、继承毫无关系。

标识一个函数出了函数名外,还有函数的参数(个数和类型),也就是说,一个类中可以有两个或多个函数,叫同一个名字而他们的参数不同。他们之间号位关系,是不同的函数,只是可能他们的功能类似,所以命名才一样,增加可读性,仅此而已。

覆盖(override),是放声在子类中,也就是说必须有继承的情况下才有覆盖发生。我们知道继承一个类,也就有了父类的全部方法,如果你感到哪个方法不爽,功能要变,就把这个函数在子类中重新实现一遍。这样在调用这个方法的时候,就是执行子类的中的过程了。父类中的函数就被覆盖了。覆盖的时候函数名和参数要和父类中完全一样,否则就是两个函数,不能覆盖,毫无关系。

2、String 是基本数据类型么?

不是,基本数据类型包括,int;long;byte;boolean;short;char,float,double。

3、int 和 Integer 有什么区别