`
诗意的栖居
  • 浏览: 269554 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

第五章 类和对象

 
阅读更多
封装:1.私有化属性成员
      2.公开get、set方法,供外界访问
      3.多元化的构造方法
构造方法:1.不需要返回值,void也可以省略
         2.方法名与类名相同
         3.在每次创建对象时自动调用
         4.构造方法可以重载,可以有多个,可以利用参数初始化属性成员
         5.自己没写时,编译器会给每个java类提供一个无参的构造方法,一旦自己自定义了,默认的无参的无效

创建对象:1.分配空间。2.初始化属性。3.调用构造方法

static{语句}静态代码块,类加载时(new)执行,多次new,只执行一次
{方法体}    实例代码块,每创建一个对象调用一次
若实例化两次(new两次)输出顺序:
静态代码块-->实例代码块-->构造方法-->实例代码块-->构造方法

继承:1.java单一继承,若没有声明父类,默认继承object类
      2.构造方法不能被继承,用super()调用,必须写在子类构造方法的第一行
         方法和属性可以被继承,继承下来的private修饰的那部分,不能直接调用,通过get、set方法调用
      3.子类构造方法执行时默认调用父类的构造方法,如果父类没有默认的构造方法,崽子类的构造方法的第一行声明调用父类的构造方法
子类生成对象:1递归调用父类的构造方法2分配空间3属性赋值4本类的构造方法

子类创建父类对象,子类对象只能看到父类的东西

多态(一般指运行时多态):
  编译时多态:方法重载(方法名相同,参数不同,参数个数不同或类型不同都可以,与返回值无关;不同类型的顺序不同也可以)。调用时严格类型匹配,若没有匹配的向上就近。
  运行时多态:方法覆盖(子类覆盖父类的方法)(toString()和equals()方法一般需要被覆盖)
            1.重写方法必须和被重写的方法具有相同的方法名称,参数列表和返回类型,只有方法体不同,方法名不同时,编译不会出错,很可能结果不对
              2.重写方法不能使用比被重写方法更严格的访问权限
              3.子类抛出的异常不能比父类宽
              4.继承、重写父类的方法后,父类引用指向子类对象,调用父类的方法时会发生多态,即对象类型不变,还是父类类型,调用父类的方法,运行时寻找子类覆盖后的方法

若需要强制类型转换,先用instance of判断,若是同一个类型就转换,返回值,boolean类型

会发生类加载:1.实例化 A a = new A();
            2.访问static修饰的成员变量时
              3.访问子类加载父类,访问父类加载子类

实例化子类是,代码执行顺序:
    父类static代码块->子类执行代码块->父类普通代码块->父类构造方法->子类普通代码块->子类构造方法。

访问控制
修饰符类内部同一个包子类任何地方
privateyes
defaultyesyes在同一包中即可,否则不行
protectedyesyesyes(不管在哪)
publicyesyesyesyes

class只能用public和default(不写)
  • 大小: 10.8 KB
  • 大小: 8.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics