知识点遗漏总结

第一(test07)


1.父类的构造方法是不会被子类继承的,在产生子类对象的时候,会先调用父类构造方法,再调用子类构造方法。
2.final最终类、终态类--不能被继承,final最终方法--不能被重写。
3.静态初始化块--在加载期被执行,一个类只被加载一次。
4.实例初始化块--在产生对象的时候被自动调用,在构造方法执行初始化属性之后,在构造方法执行程序员所书写的代码之前。
5.重写:方法名、参数列表、返回类型必须与父类方法一致,  方法的访问修饰符子类不能比父类小,  方法抛出的异常,子类不能比父类多//这里的更多指的是异常范围,而不是个数(请记住异常是有继承关系的)
6.toString()-------返回一个对象的字符串描述.---------当对一个对象和字符相加时也会自动调用toString方法
System.out.print(stu0);//当直接对一个对象进行字符串操作时,会自动调用该方法,其实相当于System.out.print(stu0.toString);
7.==  ------ 双等号比较对象,比较的是这两个引用是否指向同一个对象!而不是两个对象业务上是否可以认为是相等的
equals()-----比较两个对象在业务上是否相等,往往需要根据具体业务进行重写
instanceof------判断其左边对象是否为其右边类的实例.
str2.contains(str1);------str2是否包含str1   是返回true,否返回false
----------------------------------------------------------------------------------------------------------------
第二(test08)


1.static修饰的属性--静态属性或者类属性
该属性没有存放在对象身上,而是单独存放在数据段的静态区
全类共享1个--对象.name或者类名.name
它与对象无关,与类有关
该属性是在加载期即被产生,初始化
常量属性可以直接写成public static final的
  变量属性要分析出一定符合全类共享一个值,才能设计为static
2.static修饰的方法--静态方法或者类方法
该方法与对象无关,与类有关
静态方法里面不能写this,因为有可能是使用类名调用,此时没有当前对象
静态方法里面只能调用到静态属性,不能调用非静态属性
静态方法只能调用静态方法,不能调用非静态方法
非静态方法既可以调用静态方法,也可以调用非静态方法
其原因是static方法在加载期优先被加载
只有在遇到工具类的工具方法时,我们才将这类方法设计为static的
---------------------------------------------------------------------------------------------------------------
第三(test08)


1.成员内部类
生成的Class文件名格式---外部类类名$内部类类名.class
可以有访问修饰符,控制能否在本类之外被使用(属性也是如此)
可以有属性、初始化块、构造、方法,但都不能是static的---因为该内部类与外部类对象相关!
成员内部类的方法可以操作外部类的属性和方法(不管是否是static的)
当内部类与外部类有同名属性的时候,this.属性指代的是内部类的,外部类.this.属性才能指代外部类的该属性。
2.静态内部类---成员内部类的特例
Class文件名---外部类类名$内部类类名.class
可以有访问修饰符,控制能否在本类之外被使用(属性也是如此)
可以有属性、初始化块、构造、方法,除了构造都可以是static的---因为该内部类与外部类对象无关!
静态内部类的方法(无论是否是static的),只能操作外部类的static属性和static方法
3.局部内部类(方法内部)
Class文件名---外部类类名$序号内部类类名.class
没有访问修饰符,只能在本方法中被使用(局部变量也是如此)
可以有属性、初始化块、构造、方法,但都不能是static的---因为局部内部类不仅与对象无关、与类也不管、只跟方法的调用有关
局部内部类的方法中,可以操作外部类的属性和方法(不管是否是static)
但是不能调用到所在外部类方法的局部变量,但外部类方法的常量可以调用到
4.匿名内部类---在new对象的时候,才去定义该类有哪些属性和方法。
Class文件名---外部类类名$序号.class
没有访问修饰符,只能在本方法中使用1次
可以有属性、初始化块、构造、方法,但都不能是static的---因为局部内部类不仅与对象无关、与类也不管、 只跟方法的调用有关
-----------------------------------------------------------------------------------------------------------------
第四(test09)


抽象类  ( 抽象类的用途是专门用来产生子类的)
1.Girl设计为抽象类,不影响动态绑定,抽象类的引用可以指向子类对象,并强迫子类必须重写要调用的抽象方法
2.有抽象方法的类必须是抽象类------在语法上抽象类不一定有抽象方法,但这么做失去了设计的意义
3.抽象类也是有构造方法的-----抽象类不能产生对象,但是子类可以产生对象。
4.抽象方法-----表明该类拥有一个这样的行为,但是不知道该如何去实现由子类来实现。格式:public abstract void response();
5.子类继承抽象类的时候,必须重写所有的抽象方法-----除非该子类自己也是抽象类
------------------------------------------------------------------------------------------------------------------
第五(test10)


1.接口继承接口,可以是多继承   :public interface InterfaceABC extends InterfaceA,InterfaceB,InterfaceC{   }
2.使用接口隔离原则(也叫最小接口原则),尽量定义小接口
3.接口--命名上往往后面加上able,代表提供什么样的能力 ,属性只能是公共静态常量属性,就算不写关键字,也会默认为公共静态常量
4.类也可以同时做子类继承和实现接口,类可以同时实现多个接口
5.接口是没有构造的 ,接口里面的所有方法都是公共抽象方法,就算不写也默认
6.类实现接口,使用关键字implements ,实现接口,必须重写来自于接口的所有抽象方法(比如本类);没有重写来自于接口的所有方法,那么该类只能是抽象类(比如:NewCar类).
-------------------------------------------------------------------------------------------------------------------
第六(test11)
1.throws 书写在方法声明的最后
  throws 后面跟的是异常类名 ,而且可以有多个类名(中间由逗号分隔)
  throws 表明本方法有可能发生某个类型的异常
例如:public void b() throws Exception{  }
2.如果程序员主动抛出一个异常---需要使用throw 异常对象;
throw 书写在方法体//throw后面跟的是异常对象(只能跟1个对象)//一旦执行到throw这句代码,一定会发生异常
//如果throw后面的异常对象是编译时异常,那么该方法声明后面必须加throws
//如果throw后面的异常对象时运行时异常,那么该方法声明后面可以不加throws
例如:throw new Exception();
-----------------------------------------------------------------------------------------------------------------
第七(test12)


字符串有三种类型--String、StringBuffer、StringBuilder
String:
1.String常量也是对象,在加载期就被产生,放到数据段的字符串常量池当中
2.注意String的空与空串的区别,空,没有String对象,空串,有String对象,对象里面没有字符
3:String对象一旦产生,内容不可更改;每次改变都是产生了一个新的对象
StringBuffer类型
特点一:StringBuffer对象内容可以更改(如果在开发中,需要做大量的字符串拼接动作,选用它)
特点二:线程安全、但效率低(多线程程序使用)
StringBuilder类型
特点一:StringBuilder对象内容可以更改
特点二:线程不安全,但效率高(单线程程序中使用)
结论:String是使用最多的字符串类型,方法丰富,语法简单!
如果出现大量的字符串拼接动作,请使用StringBuilder或StringBuffer替换
单线程应用以及没有线程安全性问题的多线程应用,使用StringBuilder
会出现线程安全性问题(多个线程访问同一个字符串对象),使用StringBuffer

你可能感兴趣的:(知识点遗漏总结)