面向对象总结-05-----黑马程序员

发布时间:2014-10-22 13:26:29编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"面向对象总结-05-----黑马程序员",主要涉及到面向对象总结-05-----黑马程序员方面的内容,对于面向对象总结-05-----黑马程序员感兴趣的同学可以参考一下。

ASP.Net+Android+IOS开发------期待与您交流   < Object类,内部类,匿名内部类> 1. Object类  * 在java中,有一个老大,皇帝,叫做Object类  * 任何一个类,都是Object的子类  * 任何一个类,都直接,或者间接继承自Object类  * Object类有构造方法吗?构造方法第一行是super() 2. Object类中的方法  * toString();     * toString(),返回此对象的字符串表现形式     * 覆盖toString()建立我们自己的字符串表现形式     * 返回本对象中成员属性  * hashCode()方法    * 返回int    * 22608339   @ 158f9d3       * 原来我们看到的这个十六进制,是被转换后的哈希值    * 哈希值,不是地址值    * 程序员参考的,配合后期集合使用 Hashtable  * equals()方法  *****    * java工程师(Oracle)认为,任何对象都具备比较性    * Object类,定义类一个比较对象的功能,equals()方法    * equals()方法是所有对象都具备的,可以使用这个方法,进行对象之间的比较    * equals()方法的原始代码        public boolean equals(Object obj){          return (this == obj);        }    * 覆盖equals方法,建立对象自己的比较形式,没有必须要比较地址值    * 面试题:== equals的区别       1. == 比较运算符 equals是Object定义的方法       2. == 在基本数据类型中,比较的是基本数据类型的具体数值          == 在引用数据类型中,比较的是对象的地址值  p == p1       3. equals方法,Object类的方法,比较对象的地址值          覆盖equals方法,建立对象自己独特的比较形式    * 日后开发。equals方法就是一个规范,只要我们调用对象的equals方法,就是在做对象之间的比较        怎么比较,由equals方法中进行定义 下面是Object类中的方法的覆写并自己定义比较方法 //覆盖equals建立对象自己独特的比较方式 class Person { private String name; private int age; Person(String name,int age){ this.name = name ; this.age = age; } //比较对象中的年龄,比较的结果不重要,写equals方法很重要 public boolean equals(Object obj){//Object obj = p2;obj.age; if(obj ==null)//健壮性判断,如果传递的是null,不要在比较了 return false; if( this == obj)//健壮性判断,如果是同一个对象,直接返回真 return true; //return this == obj if(obj instanceof Person){ Person p = (Person)obj; return this.age == p.age; } return false; } } class ObjectDemo1 { public static void main(String[] args) { Person p1 = new Person("lisi",25); Person p2 = new Person("zhangsan",25); boolean b = p1.equals(p2); System.out.println("b="+b); } }  3. 内部类,类中类,嵌套类    * 在一个类的内部,还有另外的一个类    * 内部类,可以直接使用外部类成员,包括私有    * 但是,如果外部类,要使用内部类中成员,必须要建立内部类的对象  4. 内部类的访问格式    * 访问的是内部类方法,内部类,和内部类的方法,非静态      外部类名.内部类名 变量 = new 外部类对象().new 内部类对象();      变量.内部类方法名();    * 访问内部类的方法,内部类,和内部类的方法,都是静态      外部类名.内部类名.内部类方法名();    * 访问内部类的方法,内部类是静态的,内部类的方法,非静态      外部类名.内部类名 变量 = new 外部类名.内部类对象();      变量.内部类方法名();    局部内部类,访问局部变量,局部变量被final修饰    原因在于生命周期:    如果局部方法出栈局部变量,肯定也消失了,如果被final修饰    变量成了常量,存储在方法区的常量池中,生命最长    此时如果局部方法出栈,但是局部的内部类依然还有对象的引用的话    是可以访问,局部变量的,因为局部变量的生命大于了对象的生命  5. 匿名内部类--记住格式 AWT(图形化界面)会用     * 匿名内部类,有一个前提,必须继承或者是实现一个接口     * 接口名 变量 = new 接口名(){        覆盖抽象方法     };     变量.方法名(); 内部类的应用访问方法的代码实现 class Outer { private static int x = 3 ; static class Inner//内部类,类中类,写在了外部类的成员位置 { private static int x = 4 ; public static void show(){ int x = 5 ; System.out.println("Inner...show"+Outer.x); } } } class InnerClassDemo { public static void main(String[] args) { //外部类名.内部类名 变量 = new 外部类对象().new 内部类对象(); // 变量.内部类方法名(); //Outer.Inner oi = new Outer().new Inner(); //oi.show(); // 外部类名.内部类名.内部类方法名(); Outer.Inner.show(); // Outer.Inner oi = new Outer.Inner(); // oi.show(); } } interface A { void show(); void sum(); } class Outer { public void method(){ //建立子类,实现A接口,覆盖抽象方法,一步完成 //new 接口或者父类 对象不是分号结束,是大括号结束 A a = new A(){ //建立实现类对象,并覆盖方法,一步完成 public void show(){ System.out.println("匿名内部类。。。show"); } public void sum(){ System.out.println("匿名内部类。。。sum"); } }; a.sum(); a.show(); } } //建立子类,实现A接口,覆盖抽象方法 /*class AImp implements A { public void show(){ } public void sum(){ } }*/ class NiMingDemo { public static void main(String[] args) { new Outer().method(); } }  6. 模板方法设计模式    * 统计什么代码,先期不确定,不知道统计的是什么,但是明确一点,统计的代码不变        统计的内容发生了变化        将变化的内容,对外暴露出去,延迟到子类实现    * 先期做什么事情,我不清楚全部,但是清楚一部分内容        如果出现这样的情况,将不清楚的部分,对外暴露出去,由子类的延迟实现        这样解决问题的方式,模板方法设计模式  7. 多态的案例,数据库的模拟操作     * 利用多态的技术,实现数据库的瞬间转换     * java程序,不直接操作数据库,通过一个接口的形式,来实现功能     * 数据库的功能有4个,增删改查 ASP.Net+Android+IOS开发------期待与您交流  详细请查看:http://edu.csdn.net


上一篇:iOS 开发者必知的 75 个工具(译文)
下一篇:linux上获取本机ip的各种perl写法

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款