1写在前边的话:2015年1月23日如鹏线上训练营第三十天什么是格局,格局就是一个人的眼光、胸襟、胆识等心理要素的内在布局!一个人的发展往往受局限,其实“局限”就是格局太小,为其所限。谋大事者必要布大局,对于人生这盘棋来说,我们首先要学习的不是技巧,而是布局。大格局,即以大视觉切入人生,力求站得更高,看的更远、做的更大。大格局决定着事情发展的方向,掌控了大格局,也就掌控了局势。一个人格局大了,未来的路才能宽!如果把人生当做一盘棋,那么人生的结局就由这盘棋的格局决定。想要赢得人生这盘棋的胜利,关键在于把握住棋局。在人与人的对弈中,舍卒保车、飞象跳马.....种种棋着就如人生中的每一次博弈,棋局的赢家往往是那些有着先予后取的度量、统筹全局的高度、运筹帷幄而决胜千里的方略与气势的棋手。于丹说得好“成长问题关键在于自己给自己建立生命格局”。为何要有大的格局?局限就是格局大小,为其所限。在今天这个知识不断更新的世界里,我们咋不断刷新自己的知识结构,只有一点最重要,就是尽量酝酿一种大胸怀。大境界才能有大胸怀,大格局才有作为。2继承的概念:继承是面向对象程序设计的一个重要特征,它实现了代码的重用。在JAVA中,通过继承可以在现有类的基础上创建新的类,新类继承原类的属性和方法。在新类中,可以重新定义继承的方法,也可以添加属性和方法来扩展新类的概念。Object类是JAVA中所有类的根类,使用Object对象可以创建具有通用性的程序。●面向对象最重要的特点之一,就是可以实现对类的复用。可以通过两种方法实现:1.一种方法是将一个类当做另外一个类的属性(称为合成/聚合关系)2.另外一种方法是一个类继承另外一个类。●实现继承的类称为子类(或派生类),而被继承的类称为父类,也叫超类或基类●通过“继承”一个现有的类,可以使用已经定义的类中的方法和变量(权限允许的前提下)。(public/private/protected)●类的方法和属性可以被继承,但是类的构造器不能被继承Java类只支持单继承,不允许多继承●一个子类只能有一个父类●一个父类可以派生出多个子类3Object类:●Object类是所有java类的根父类(最高父类)任何一个java的类(class)都直接或者间接继承自Object类●如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类Super关键字:●应用场景:当想要调用父类中的同名属性/方法/构造方法时,用super关键字来区分●在java类中使用super来引用父类的成分super.可用于访问父类中定义的属性Demosuper.可用于访问父类中定义的成员方法Demosuper(....)可用于在子类构造器中调用父类的构造器Demo使用super注意事项:Super只能应用在成员方法和构造方法中,不能应用在静态方法中(和this是一样的),如果在构造方法中使用super(.....)必须放在第一行。this()调用重载的构造方法super()调用父类的构造函数4继承中的构造方法:●子类在构造函数的过程中必须(显示或隐式地)调用其基类的构造方法,直到Object●子类可以在自己的构造方法中使用super调用基类的构造方法●如果子类的构造方法没有显式的调用基类的构造方法,则系统默认调用基类无参数的构造方法:super()●如果子类构造方法中既没有显示调用基类的构造方法,而基类中又没有无参的构造方法(基类没有无参的构造方法是因为程序员已经重新写了基类的构造方法,系统不会再默认调用基类的无参构造方法了),则编译出错5按照顺序进行:父类static{},子类static{},父类{},父类构造方法,子类{}子类的构造方法{}6访问修饰符:●(普通)类的访问修饰符public:任何包中的类都可以访问该类默认值:同一个包中的类可以访问该类●成员的访问修饰符private:只对本身类可见默认值:对同一包中的类可见protected:对所有子类和同包中的类可见public:对一切类可见局部变量、方法形参:不能用权限修饰符(protected/public/private)注意:访问成员的前提是首先能访问成员所属的类●访问控制:访问控制的限制程度从高到低为:privatedefaultprotectedpublic注:default不是一个修饰符,它只是用来表示一种不加任何修饰符时的状态父类中的私有方法可以被父类中的方法调用,子类可以间接调用父类中的私有方法,但一般不这样做。方法的重写:●在子类中可以根据需要对父类中继承来的方法进行改造——方法的重写(@Override)7●重写方法必须和被重写方法具有相同的方法名称(大小写敏感)、形式参数列表和返回值类型●重写方法不能使用比被重写方法更加严格的访问权限●父类的静态方法(static)不能被子类覆盖为非静态方法,反之亦然。,取其精华大原则:子类的功能应该比父类强大.8关于多态:●静态多态也叫编译时多态,通过方法重载实现●动态多态也叫运行时多态,通过对象的多态性实现面向对象的三大特征:封装、继承、多态多态——在java中,子类的对象可以代替父类的对象使用一个引用类型变量可能指向(引用)多种不同类型的对象Personp=newStudent();Objectm=newPerson();m=newStudent();一个引用类型变量如果声明为父类的类型,但实际引用的子类对象,那么该变量就不能再访问子类中新增加的属性和方法。多态的第一种主要形式:父类的引用指向了子类的对象.Studentm=newStudent();m.school=“pku”//合法Persone=newStudent();e.school=“pku”;//非法9虚方法调用:(virtualMethodInvocation)●正常的方法调用Persone=newPerson();e.getInfo();Studente=newStudent();e.getInfo();●虚方法调用(多态情况下)Persone=newStudent();e.getInfo();//调用了在Student类中重写的getInfo方法●方法声明的参数类型为父类类型,可以使用子类的对象作为实参调用该方法Java大原则之三——最佳匹配性原则println(String);println(Object);10Instanceof操作符:instanceof左边的引用指向的对象的实际类型是不是右边的类型(或其子类类型)对象造型(Casting):●对java对象的类型转换称为造型在造型前通常使用instanceof操作符测试一个对象的类型从子类到父类的类型转换可以自动进行从父类到子类的类型转换必须通过造型(强制类型转换)实现子类的对象可以当做基类的对象来使用称向上转型,反之称11为向下转型无继承关系的引用类型间的转换是非法的多态的第三种主要形式:声明的返回值类型为父类类型,实际返回的是子类对象的地址例如Collection接口中有一个iterator()方法,声明的返回值类型是一个遍历器接口类型iterator的对象java.util.Calendar抽象类中定义的publicstaticCalendargetInstance();返回的实际是Calendar的子类GregorianCalendar的对象(地址)toString()方法:1.Object类中定义有publicStringtoString()方法,其返值是String类型,描述当前对象的有关信息。默认情况是打印的是:类名@hashcode的十六进制表示2.在进行String与其他数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象类的toString()方法。3.可以根据需要在用户自定义类型中重写toString()方法。Object类的方法:inthashCode()方法,返回该对象的哈希码值。ClassgetClass()方法,返回此Object的运行时类1213Integer类:StringtoString()返回一个表示该Integer值的String对象。staticStringtoString(inti)返回一个表示指定整数的String对象。staticStringtoString(inti,intradix)用第二个参数指定的基数返回第一个参数的字符串表示形式。14Objet类的方法:inthashCode()方法返回该对象的哈希值ClassgetClass()方法返回此Object的运行时类15==操作符:●相同的字符串常量相等●两个Integer,如果其中至少一个是new出来的,则不相等;如果都是同一个常量赋值的,则相等。●基本数据类型和封装类会拆箱比较数值●两个不同封装的对象不能比较,编译报错●两个不同的基本数据类型,如果可以自动转换,则可以比较。●有继承关系的引用数据类型对象之间可以比较,当指向同一个对象的时候相等。●没有继承关系的引用数据类型不能比较equals方法:●在Object类中定义的equals方法:publicbooleanequal(Objectobj)注意:形参是Object类型。●调用equals()方法时的实参可以是基本数据类型,java会自动进行装箱。==操作符与equals方法:1.在比较引用数据类型时,==操作符与equals()作用完全一样——看引用的是不是同一对象2.除非在自定义的类中重写了equals方法,或是下面的四类已经重写了equals方法的特例:16java.io.File;java.lang.String;Java.util.Date;封装类注:比较字符串时,尽量不要用==操作符,而用equals()方法这四类当用equals()方法进行比较时,只比较类型及内容而不看引用的是不是同一对象。关键字final:●在java中声明类、属性和方法时,可以使用final修饰符来修饰。●final标记的类不能被继承●final标记的方法不能被子类重写●final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次,且在使用前必须被赋值。●final标记的方法的形参不能被重新赋值●final标记的成员变量必须在声明的同时或在每个构造方法(或构造语句块)中显示赋值,然后才能使用●构造方法不能使用final来修饰,因为构造方法不能被继承,更无所谓重写,用final修饰没有意义,编译会报错。final类里面可以定义final方法17抽象类:●应用场景:在定义一个类时,有些方法暂时还不知道该怎么实现,只能等子类把这些方法都实现后才能使用。●这样的方法应该定义为抽象abstrct方法●含有抽象方法的类必须定义为抽象abstrct类用abstract来修饰类或方法abstractclassAbstrctClass{.....}abstrctreturnTypeabstrctMethod([paramlist]);抽象类不能被实例化,抽象方法必须被全部重写后,才能生成它的子类对象。如果一个子类没有实现抽象类中所有的抽象方法,则子类也要声明为一个抽象类。抽象类不一定包含抽象方法——不想让人直接实例化可以声明抽象类类型的引用,把它作为方法形参,返回值类型等。java.awt.event.MouseAdapterpublicabstractclassMouseAdapterimplementsMouseListener,MouseWheelListener,MouseMotionListener{...publicvoidmouseClicked(MouseEvente){}publicvoidmousePressed(MouseEvente){}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}.