Java学习历程----面向对象二

1 继承性的理解
子类继承父类的 属性 方法 (包括父类的 私有属性、方法,,但是没有使用权!!!!!)

2 调试程序
---->syso语句
---->debug 设置断点

3 重写 override
在这里插入图片描述

4 super关键字
属性是不能被覆盖的
构造器中 super 和 this不能同时用
在构造器的首行 没有显示的声明 this 或者 super 则默认调用的是 super()

5 子类对象实例化的全过程

6 多态性
多态的使用:虚拟方法调用,编译时看父类 运行时看子类—动态绑定
父类的引用指向子类的对象
java Person p = new Man(); p.eat();
/当调用子父类同名同参数的方法时,调用的是子类重写的方法
不能调用子类特有的方法, 只能调父类声明的方法!!!!
一定要涉及重写 否则就不是多态性了

---->为什么要用多态性
不太清楚
---->多态性只用于方法 不适用于属性
---->多态是一种运行时行为

7 虚拟方法调用
子父类有同名同参数方法 在多态情况下 ,父类的方法称为虚拟方法
动态绑定
注:多态性中,内存中实际加载了子类特有的属性和方法,但是由于变量声明为父类对象,导致编译时,只能调用父类的属性方法

8 向下转型
多态性中,想要调用子类特有的方法
a nstanceof A 判断a是否时A的一个实例 否则会报ClassCastException异常
---->Person p = new Man();
If(p instanceof Man) Man man = (Man)p;

9 Object类的使用
---->clone()
---->equals()

---->fonalize() 垃圾回收 系统自己调 不能自己主动调
final、finally、finalize的区别?

10 == 和 equals的区别
----> ==
用于基本数据类型变量 / 引用数据类型变量
基本数据类型:比较值 / 应该考虑到自动类型提升!!
int a = 10; double b = 10.0 char c = 10; a == b; a == c;
引用数据类型: 比较地址值;
注:== 左右两侧需要类型一致 否则编译不通过
----> equals(Object obj);
只用在引用数据类型
Object中equals()也是==
实际用的时候需要重写

11 toString()

上面的代码中表示 String中重写了toString方法
String Date File中都重写了

12 包装类
Integer / Character
---->自动装箱 / 自动拆箱

Integer in1 = new Integer(12);
int in2 = in1.intValue();
String str = String.valueOf(in2);
int in3 = Integer.parseInt(str);

----> Object o1 = true ? new Integer(1) : new Double(2.0); //自动类型提升
System.out.println(o1); // 1.0
---->
---->
---->

Integer a = new Integer(1);
Integer b = new Integer(1);
System.out.println(a == b);  false
Integer m = 1;
Integer n = 1;
System.out.println(m == n); true
Integer x = 128;
Integer y = 128;
System.out.println(x == y); false  

-128到127 Integer中定义了一个IntegerCache结构, 定义了Integer[] 保存了-128 127,使用自动装箱 在这个范围内,就可以用这个数组中元素,就不需要在重新造一个类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值