- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
core java重难点总结
abstract class 和interface
1.abstract
1) 含有abstract修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。
2) 含有 abstract方法的类必须定义为abstract class,abstract class 类中的方法不必是抽象的。
3) abstract class 类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。
4) 如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
2.interface
接口(interface )可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract 类型,接口中的成员变量类型默认为 public static final 。
两者的语法区别:
1. 抽象类可以有构造方法,接口中不能有构造方法。
2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方
法。
4. 抽象类中的抽象方法的访问类型可以是 public ,protected ,但接口中的抽象方法只能是public 类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口
中定义的变量只能是public static final 类型,并且默认即为 public static final 类型。
一个类可以实现多个接口,但只能继承一个抽象类。
String和StringBuffer
String初始化:
String str = abc;
String str = new String(abc);
”abc”对应一个对象,这个对象放在字符串常量缓冲区,常量”abc”不管出现多少遍,都是缓冲区中的那一个。而用关键字 new 调用构造器,就创建一个新的对象,无论内容是否相同。它依据那个常量”abc”对象的内容来创建出一个新 String 对象。如果以前就用过“abc”,这句代表就不会创建”abc”自己了,直接从缓冲区拿。
String s = new String(xyz); 创建了几个String Object?
s=a+b+c+d;创建了几个对象?
javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。
s1=a;
s1=s1+b;创建了几个对象?
String是final类,不可改变,只能重新创建对象。
StringBuffer sb = new StringBuffer();
sb.append(a).append(b);创建了几个对象?
StringBufrfer sb = new StringBuffer();
三.静态变量和实例变量
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被
分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
总之,实例变量 必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
四.Static方法
是否可以从一个static 方法内部发出对非static
方法的调用?
不可以。因为非 static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方
法调用,而 static方法调用时不需要创建对象,可以直接调用。也就是说,当一个 static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非 static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非 static方法的调用。
五.Overload 和Override
覆盖要注意以下的几点:
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4.覆盖的方法的访问权限只能比父类的相同或更大。
5、被覆盖
文档评论(0)