疯狂java讲义第五章(面向对象(上))重点知识

1、对象的this引用。
2、static方法中。可以new一个新类,来使用方法。
3、类归类,实例归实例。不要用实例调用static修饰的成员变量和方法。
4、this在构造器中代表该构造器正在初始化的对象。
5、return this;就可以重复调用同一个方法a.run().run().run();
6、java的参数传递是值传递,只传递复制品。复制的都是栈区的值,不同方法,有不同的栈,所以栈中的值改变不会影响其他栈,但是不同的方法有相同的堆,而引用变量中保存的地址,传递到其他的栈中,会导致复制品的指向的是同一个的对象。对于复制品的操作,会反应到堆区同一个对象的内存上。
也就是说java的值传递,只会复制栈区中的变量。而不会复制堆区中的对象。
7、public void test(int a , String… books)指定数量不确定的形参。这种带省略号的形参,只能放在方法形参的最后。且最多只能有一个。既可以传入多个参数,也可以传入一个数组。也可以不传。
8、第一次主动使用一个类,该类自动初始化,也就是等于对该类使用了Class.forName()方法。
9、当构造器彻底包含另一个构造器,需要在构造器中调用构造器时,使用this(name,color);必须放在执行体的第一条。
10、子类会继承父类的,全部成员变量、方法和内部类(包括内部接口、枚举),但不能获得父类的构造器和初始化块。虽然不能获得父类的构造器,但是可以通过super(1,“gh”);来调用父类的构造器。也只能放在第一行,所以和this冲突,不能同时出现。
11、java类只能有一个直接父类,但可以有无限多个间接父类。
12、子类覆盖或者说重写父类的方法,需要方法名和形参列表相同,返回值类型和声明抛出的异常类都应该比父类更小或相等,子类方法的访问权限要大于等于父类方法。类方法只能覆盖类方法,实例方法只能覆盖实例方法。
13、重载是同一个类的多个同名方法之间。重写是子类和父类的同名方法之间。
14、super(父类被覆盖的实例方法)作为调用者。例:super.fly();
父类类名(父类被覆盖的类方法)作为调用者。例:Bird.fly();
15、多态:编译时类型和运行时类型不同。
引用变量只能调用父类方法,不能调用子类扩展的方法,但如果子类重写了父类的方法,则执行子类的重写方法(这里要注意是实例方法,类方法,就算子类重写了,调用的也是父类的类方法),而成员变量都是父类的。
编译阶段调用编译时类型的方法,运行时则执行它运行时类型所具有的方法,这句话不太理解。
要让引用变量能调用它运行时类型的方法,必须把它强制类型转换成运行时类型。
16、instanceof和强制类型转换要配合着使用。
17、组合(has-a)和继承(is-a)。
18、java创建一个对象过程
为实例变量分配内存,然后执行实例初始化块或者执行声明实例变量指定初始值的语句(二者根据排列顺序决定),最后才执行构造器。

19、关于书上135页表5.1访问控制权限表的补充
在这里插入图片描述
子类中会感觉比较模糊,容易误会,其实protected修饰后,可以被不同包内的子类访问,而default是和protected在同一个包中的子类都可以被访问。
所以只有public和protected可以跨越包的界限。
而public没有限制,
protected只能被子类使用,
private只能在本类内被访问,
default和protected的访问权限其实在同一个包下没有区别,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细水长流cpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值