java-SE-6

来源:互联网 发布:光头大大温酒数据 编辑:程序博客网 时间:2024/06/06 03:43

继承

类,子类(基类),超类(父类)

继承,其实也没什么难的;

将具体类写好以后,定义的新类如果想有这个类的样子作为模板,就可以通过继承;

在类名后面用 extends关键字 extends xxx(父类名),

先造的那个就是父类,后面通过前面那个继承的就是子类。

父类关键字supper();来使用父类的一切,这里的继承就和前面的封装就联系上了,三个访问控制符规定了两个类可以交互的内容还有交互的方式;

多态,多种形态

对象变量就是多态的;is-a置换法则表明每个子类的对象也是超类的对象;每个超类出现的地方子类也可以出现,但是反过来不行;即子类对象变量不能引用超类对象;

动态绑定

对象方法的执行过程,首先是系统寻找方法名(函数头指正)然后根据方法的属性,也就是参数类型确定具体的方法,然后进行执行;

虚拟机调用的是与当前x所引用的对象的实际类型最合适的那个类的方法,比如在子类中重载了方法,若调用了该方法,优先调用子类的该方法;

而且虚拟机对每个对象都建立了方法表;而且虚拟机会查找当前已经使用过的方法,如果新的另一个对象要求调用则可以使用这个;

强制类型转换

就是在要强制类型转换的属性,方法,对象之类的前面加()其中写要强制转换的类型;而且在强制转换的时候有时因为存储的方式不一样会导致错误;比如double的1.000转成int型的有时会变成零,因为两个的计数方式不一样;

还有个隐式类型转换,就是高精度往低精度,低精度往高精度做赋值运算的时候;

高往低转会精度丢失,低往高会补零;

抽象类

前面带有abstract的都是抽象的

也就是说只要声明是抽象类,就不能实例化;

抽象类,抽象方法;

当然在子类的实现过程中,如果子类定义了所有的抽象方法,则就不再会成为抽象类了,将可以实例化,但是如果只是定义了部分的抽象方法,则还是抽象类;

object,所有类的超类;

equals,比较对象的方法,相等测试;

哈希码

每个对象都有一个哈希值整数,相同的对象值是一样的;可以通过这个来比较;int hashCode();

tostring();获取对象的字符串,对象名加对象域,以字符串的形式体现;

还有就是java允许动态定义数组,即

int a;

Scanner in=new Scanner(System.in);

a=in.nextInt;

int [] b=new int[a];//数组长度为a;

泛型

就和c++的模板一样,允许各种未定义的统一的类型

Person<T>=new Person<T>();

泛型数组

ArrayList<T>()

ArrayList<T> a=new ArrayList<T>();

a.add(T);来添加元素;

a.size();元素个数;

a.trimToSize();削减容量;设置某一个元素a.set(i,object);获取某个元素a.get(i);插入a.add(n,object);删除a.remove(i);用foreach循环遍历;

tostring();转换成字符串

valueOf();转换成整型

parseInt();转换成整型

包装类,将具体类型包装成某个类;

Integer,Long,Float,Double,Short,Byte,Character,Boolen;

枚举类

enum xx{2,3,4,5,6,7,5}每一个枚举类都有一个静态value方法,返回所有元素;ordinal()返回元素位置;

反射

反射库十一个非常强大的工具集,javaBean中经常用到,通过其传入的参数,id等调用Bean;

能够分析类的能力的程序称之为反射;

在程序运行期间,java运行时系统始终为所有对象维护者一个称之为运行时的类型表示,这个信息追踪者所有对象的所属类,还有各种信息;

保存这种信息的类叫做Class;通常我们都是用的是返回类名

Class c=e.getClass();

c.getName();或e.getClass().getName();一般使用这个的时候都默认设置异常处理器;

throws Exception



原创粉丝点击