第五章 类和对象

封装: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代码块->子类执行代码块->父类普通代码块->父类构造方法->子类普通代码块->子类构造方法。

访问控制
[table]
|修饰符|类内部|同一个包|子类|任何地方|
|private|yes||||
|default|yes|yes|在同一包中即可,否则不行||
|protected|yes|yes|yes(不管在哪)||
|public|yes|yes|yes|yes|
[/table]
class只能用public和default(不写)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值