String类、封装类、类的继承、和equals、super和this、方法重写与重载、访问控制静态块匿名块及对象创建.docVIP

  • 1
  • 0
  • 约1.72千字
  • 约 3页
  • 2017-11-20 发布于北京
  • 举报

String类、封装类、类的继承、和equals、super和this、方法重写与重载、访问控制静态块匿名块及对象创建.doc

String类、封装类、类的继承、和equals、super和this、方法重写与重载、访问控制静态块匿名块及对象创建

子类和父类间的隐式转换: Father f = new Son(); //子类的对象可以隐式转换给父类的引用 //这个父类的引用f访问的就是子类中的方法 //但是只能够访问从父类继承到子类中的方法 //子类中所特有的方法不能被访问 本类 同包中 子类(继承) 不同包中非子类 private √ × × × default √ √ × × protected √ √ √ × public √ √ √ √ 方法的重写与重载: 方法重写 方法重载 定义 对从父类继承过来的方法进行改写 在一个类中定义多个方法名相同的方法 范围 对于两个类而言(子类和父类) 一个类中 方法名 子类和父类方法名一致 多个方法名一致 参数 子类中方法的参数要和父类一致 参数列表不能相同(类型,个数,顺序) 返回值 子类中方法的返回值要和父类一致 多个方法的返回值可以相同也可以不同 修饰符 子类中修饰符不能比父类中更严格 无限制 super 1,在普通方法中或者构造器,我们可以通过super+“.”调用父类中的方法和属性 2,在子类的构造方法中可以通过“super()”去调用父类的构造器如果需要调用父类中的有参构造器,只需要在()后面的括号中写出参数如果在子类中没有写super()去调用父类中的任何构造器,则系统默认调用父类中的无参构造器 3,如果父类的无参构造器定义成private,则子类中不能有无参构造器并且子类中要定义一个和父类中有相同参数的构造器如果父类中的构造器都是private,则当前类不能够继承这个父类 this: this关键字用在普通方法中表示调用当前方法的对象 如果不写this,并且参数也不存在和属性名相同的变量,那么就相当于省略掉了“this.”,这个全局变量依然指的是调用这个方法的对象的属性 在构造器中,this指代的是即将创建的对象 在构造器中this()表示调用当前类的无参构造器如果要调用其他的有参构造器,则只需要在this()后面的括号中给出参数 “haha”,”女”,99); Person p:表示在棧中开辟一块引用空间并且置null ②new Person(“haha”,”女”,99);:表示调用Person类的有参构造器,执行super()(调用Object中的无参构造器,在堆中开辟内存空间 ③执行赋值语句:将传过来的name,sex,age写到对应的分配的内存空间中 ④=:将分配的内存空间的地址赋值p的引用中 静态块和匿名块 静态块:static{} 匿名块:{} 静态块只在类第一次被加载的时候执行一次,一般用于进行初始化工作; 匿名块在每一次创建本类对象或者子类对象时都会被调用一次;对于父类,每创建一个父类对象都会调用一次父类匿名块;对于子类,每创建一个子类对象都先调用父类匿名块,再调用子类的匿名块。 在一个类中可以有多个静态块和匿名框,在类加载的时候静态块是按照先后顺序执行的,在创建对象的时候匿名块也是按照先后顺序执行的。 ==和equals: 对于String类:如果要比较两个String对象本身是否相等,用“==”;如果要比较两个String对象所表示的字符串是否相同用“equals()”.在使用equals方法的过程中,如果在比较的两个对象中有字符串常量,记住用字符串常量来调用equals方法。 ==用来比较对象本身的hashCode码;equals用来比较对象表示的字符串。 因为Object类中equals方法是用“==”号实现的,所以对于没有重写equals方法的类,equals方法和==没有区别,所以请记住:在我们需要通过equals方法来完成两个对象比较的时候,需要重写equals方法。通常情况下,重写equals方法同时也重写hashCode()方法。 String类: String str = “abc”; 0x111111 0x111111 Son f 0x111111 0x101111 p haha 0x101111 女 99

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档