大三党一枚,学习javaweb 和android 有两年了,做过不少东西,准备回顾一下自己之前学过的东西(主要针对面试的问题而复习)在此写下点东西给大家分享一下,希望对大家有所帮助, (接下来我会写一些关于java android spring 和 数据结构(树,图和一些基本面试常用算法) 我复习到哪我就会写到哪)
关于java
面向对象框架图太复杂 自己画不出来 先盗张图 来自
:http://www.cnblogs.com/xscn/p/3194589.html
一 :关于我对面向对象的理解 :
- 万物皆为对象
- 面向对像基于面向过程的一种思想,将需要的功能进行封装成一种对象,强调使其具备对象特征的功能类;
- 把对象看做是服务的提供者
- 每个对象都由自己和其他对象所构成的存储;
二 :接下来是类与对象的关系 :
- 类是拥有相同行为特征对象的一个抽象概念,而对象是类这个抽象概念中事实存在的个体
三 : 关于面向对象的三个基本特征:
封装:指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使 之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。
将到类的封装又不得不讲一下 public,private和protected 这是java 进行类的内部设定的三个关键字
public: 用public 定义的元素任何人都是可用的
private:它定义的东西只有类型的创建者和类型的内部方法可用;
protected: 作用与private 相当差别在于继承的类也可以访问,
继承: 简单来讲就是子类具有父类的一般特性以及拥有自己独立的特性 ;
继续盗图
不多说直接上代码可能更容易理解一些(idea编译器)
1 /*创建一个对象的基类(父类,被继承类)*/ 2 class People{ 3 /*创建一个对象的基类(父类,被继承类)*/ 4 String sex = null; 5 int age = 0; 6 7 /*基类中存在 的基本方法*/ 8 public void peo(){ 9 System.out.println("我是一个人"); 10 } 11 public void setAge(){ 12 System.out.println("我的年龄是"+age); 13 } 14 } 15 16 /* 创建一个导出类(子类,继承类)*/ 17 class woman extends People{ 18 public void wo(){ 19 System.out.println("我是一个女人"); 20 } 21 22 // public void peo(){ 23 // System.out.println("诠释java多态的覆盖性;"); 24 // } 25 } 26 public class jicehng { 27 /*编写入口*/ 28 public static void main(String [] args){ 29 woman woman = new woman(); 30 31 woman.peo();//调用基类中的方法 32 woman.wo(); //调用子类中独立的方法 33 34 woman.age = 23;//改变父类中属性的值; 35 woman.setAge(); 36 } 37 38 39 }
下面是输出结果:
多态: 终于讲到多态了 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题.
多态的两大基本特征:
重载:首先说重载(overload),是发生在同一类中.与什么父类子类、继承毫无关系.
标识一个函数除了函数名外,还有函数的参数(个数和类型).也就是说,一个类中可以有两个或更多的函
数, 叫同一个名字而他们的参数不同.
他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!
不多说直接上截图:
覆盖:
是发生在子类中!也就是说必须有继承的情况下才有覆盖发生.
我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍.
这样再调用这个方法的时候,就是执行子类中的过程了.父类中的函数就被覆盖了.(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)
代码截图: