黑马程序员_面向对象2

StringBuilder

|--可变的字符序列,功能是相同的,是StringBuffer的一个简易替换;是1.5版本出现的;

|--是一个线程不同步的;这个是后出来的;-->效率高,比较快捷;

|--StringBuffer是线程同步的;效率低

|--单线程用StringBuilder,多线程用StringBuffer;

|--建议以后开发用StringBuilder;


|--JDK升级的3要素:提高效率,简化书写,提高安全性;


final

final:最终;

|--作为修饰符,可以修饰类,函数,还有变量;

|--被final修饰的类不可被继承;为了避免被子类复写功能,我就在类上面加了一个final,那么这个类就是最终类了;

|--继承的好处:提高了代码的复用性,多态也来了,弊端就是打破了封装性,我封装的代码都被你继承了,我里面的方法都被你复写了,你就打破了我的封装性;

|--被final修饰的方法不可以被复写

|--被final修饰的变量,是一个常量,只能赋值一次,既可以修饰成员变量,有可以修饰局部变量



抽象类

|--抽象:就是看不懂;

|--抽象类的特点:

|--抽象方法一定定义在抽象类中,

|--抽象方法和抽象类都必须被abstract关键字修饰;

|--抽象类不可以用new创建对象,因为调用抽象方法没意义;

|--抽象类中的抽象方法要被使用,必须要由子类复写其所有的抽象方法后,建立子类对象调用;如果子类只覆盖了部分抽象方法,那么该子类也要定义成抽象类;

|--当多个类中出现了多个功能,但是功能的主体不同,这时可以进行向上抽取,这时,只抽取功能定义,而不抽取功能主体;

基础班和高级班,都有自己的学校,但是方法都是一样的,但是功能主体不同,

|--建立向上抽取一个学生类

|--抽象类和一般的类没有什么不同,该怎么描述事物,就如何描述事物,只不过该事物中出现了一些看不懂的,这些不确定的部分需要明确出来,但是无法定义主体;至于是怎么实现由子类去实现,子类覆盖父类的方法;父类要和子类的方法相同;

|--抽象类比一般类多了个抽象函数;就是抽象类中可以定义抽象方法;作用就是

|--抽象类不可以被实例化


|--抽象类中可以不定义抽象方法;作用:这样做仅仅是不让该类建立对象

|--就是说抽象类里面既可以定义抽象的方法,又可以定义非抽象的方法;


接口:interface,class用于定于类,inte用来定义接口;

|--如果抽象类里面的方法全都是抽象的,这时可以表现成另一种表现形式,叫做接口;

|--当抽象类中的方法都是抽象的,那么该类可以通过抽象的形式类表示;


|--接口里面的成员全都是抽象的;

|--接口中的成员都是public的;

|--接口是不可以创建对象的,因为有抽象方法;



|--接口可以被类多实现,也就是一个类可以同时实现多个接口;也是对多继承不支持的转换形式,java支持多实现;



接口的特点

|--接口是对外暴露的规则;

|--接口是程序的功能扩展;

|--接口可以用来对实现;

|--类与接口之间是实现关系;

|--接口的出现降低了耦合性;


继承和接口的区别?

|--基本功能定义在类中,而扩展功能定义在接口中;

|--找到组织了就是继承了,在组织里面干了点副业就是扩展了-->接口;

|--在体系外用接口来表示;

|--你是我的一种用is a,继承

|--你像我中的一个,用like a;接口



static 

静态:

|--用法:是一个修饰符,只能修饰成员(成员函数和成员变量)

|--静态修饰内容,被对象所共享;

|--当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用,就是类名.静态成员


|--特有内容随着对象存储;在对内存中;

|--共享内容在方法区中存储;共享区,方法都在方法区里面


静态的特点:

|--静态随着类的加载而加载,也就是说随着类的消失而消失;静态的生命周期最长;

|--优先于对象存在

|--被所有对象所共享

|--可以直接被类名调用


实例变量和类变量的区别:

|--存放位置不同:类变量随着类的加载而存在于方法区中;

|--实例变量随着对象的建立而存在于堆内存中

|--生命周期:类变量生命周期最长,随着类的消失而消失,实例变量生命周期随着对象的消失而消失;


静态使用的注意事项:

|--静态方法只能访问静态成员;

|--非静态方法,既可以访问静态,也可以访问非静态;

|--静态方法中不可以定义this和super,因为静态优先于对象存在;


静态有利有弊:

利处:对对象共享数据经行单独空间的存储,节省空间;没有必要每个对象中都存储一份;可以直接被类名调用;

弊端:生命周期过长,访问出现局限性(静态只能访问静态)




单例设计模式:解决的是一个类在内存中只存在一个对象;













































发布了40 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/java9832/article/details/46566959
今日推荐