2020-06-21

方法重载

1.when use?

同一个类中,功能一和二的功能相似时,可以考虑让他们的方法名一致。

2.when happen?

三个条件要同时满足。
条件一:在同一个类中
条件二:方法名相同
条件三:形式参数列表不同 (类型,个数,顺序)

注:
方法重载和方法的 返回值类型 ,修饰符列表 无关

方法递归

1.what?

方法自己调用自己。

2.what should care?
• 用时必须加结束条件,没有的话,会发生栈内存溢出错误。 StackOverFlowError。 因为,一直压栈,没有弹栈,栈内存不够用。

•在实际开发中遇到递归导致的栈内存溢出错误怎么办?
one:先检查结束条件是否正确
two:如果正确,可以调整jvm的栈内存大小。

空指针异常

1.when happen?
空引用 访问 “对象相关”的数据时,会出现空指针异常。(实例变量和实例方法)
注:
垃圾回收器主要针对堆内存。
下俩图来自动点力节老杜课堂
在这里插入图片描述

在这里插入图片描述

构造方法

1.function?

one:创建对象
two:给属性赋值

2.should care?

• 当一个类中无提供任何构造方法的话,系统默认提供一个无参构造方法。
• 当一个类中手动提供构造方法,建议把无参构造手动写出,这样才no problem,这时系统不默认提供无参构造。
• 支持方法重载

封装

1.function?

one:保证内部结构的安全。
two:屏蔽复杂,暴露简单。
就是说:一个类体当中的数据,假设封装后,对于代码的调用人员来说,不需要关心代码的复杂实现,只需要通过一个简单的入口就可以访问了,另外,类体中安全级别较高的数据封装起来,外部人员就不能随意访问。

2.封装的代码实现俩步?

one:属性私有化 (private 返回值类型 属性名)
two:一个属性对外提供俩个set(修改)和get(获取)方法。可以在set方法中设立关卡来保证数据的安全性。

注:
set和get方法都是实例方法,不能带static。
不带static的方法称为实例方法,实例方法的调用必须先new对象。

set的书写格式:
public void set+属性名首字母大写(一个参数){ xxx = 一个参数; }

get的书写格式:
public 返回值类型 get+属性名首字母大写(无参){ return xxx; }

static

注:
• 实例的,都是对象相关的,需要先new对象,访问时采用“引用. ”的方式访问。可能会出现空指针异常。
• 静态的,都是类相关的,不需要new对象,访问时采用“类名. ”的方式访问。没有空指针异常发生。

this关键字

1.是一个引用保存内存地址指向自身
2.可以使用在实例方法中,也可以使用构造方法中
3.出现在实例方法中,代表的是当前对象
4.不能使用在静态方法中
5. this. 大部分情况下可以省略,但是用来区分局部变量和实力变量的时候不能省略
6. this() 这种方法只能出现在构造方法第一行表示,当前构造方法调用本类其他的构造方法,目的是代码复用。

super关键字

1.能出现在实例方法和构造方法中
2.不能使用在静态方法中
3.super. 大部分情况下可以省略
4.当父类和子类用同名属性,或者说有同样的方法,想在子类中访问父类的,super. 不能省略
5.super() 只能出现在构造方法第一行,通过当前的构造方法去调用“父类”中的构造方法,目的是: 创建子类对象时,先初始化父类型特征。
6.super的使用:
super.属性名 访问父类的属性
super.方法名(参数) 访问父类的方法
super(实参) 调用父类的构造方法

继承extends

。。。.function?

子类继承父类代码可以得到复用,有了继承关系才有了后期的方法覆盖和多态机制。

。。。.character?

1.B类继承A类,则称A类为超类,基类,父类superclass,B类则称为子类subclass,派生类,扩展类。
2.Java继承只支持单继承,不支持多继承,C++支持多继承。
3.虽然JAVA不支持多继承,但有时候会产生间接继承的效果。
4.虽然JAVA中规定,子类继承父类,除构造方法不能继承之外,剩下都可以继承。但是私有的属性无法在子类中直接访问。(父类中的private修饰的不能再子类中直接访问,可以通过间接的手段来访问)
5.JAVA中的类没有显示的继承任何类,则默认继承object类。它是JAVA语言提供的根类。
6.继承也存在一些缺点,例如,A类继承B类会导致他们之间的耦合度非常高,B类发生改变之后,会马上影响到A类。

。。。.when use?

采用“is a”描述的,可继承。比如,猫是一个动物,cat is a animal。

方法覆盖

1.when use?

父类中的方法无法满足子类的业务需求,子类,有必要对继承过来的方法进行覆盖。

2.condition?

①有继承关系的俩个类
②具有相同方法名,返回值类型,形式参数列表
③访问权限不能更低
④抛出异常不能更多

注:私有方法不能覆盖(访问权限不能更低)。
静态方法不存在方法覆盖。

类型转换异常

java.lang.ClassCastException
编译通过,运行不通过。

多态

1.向上转型和向下转型概念?

向上转型: 子----------->父 (upcasting)
又称为自动类型转换: Animal a = new Cat();
向下转型: 父----------->子(downcasting)
又称为强制转换类型: Cat c = (Cat) a;

2.when use? what risk? how to avoid? care?

• 向下转型: 需要调用或者执行子类对象中特有的方法。
•向下转型的风险: 易出现 类型转换异常
• instanceof运算符,可以在程序运行阶段,动态的判断某个引用指向的对象是否为某一种类型。

注: 不管是向上转型还是向下转型,首先他们之间必须有继承关系,这样编译出就不会报错。

3.what?

多种形态,多种状态,编译和运行有两个不同的状态,
编译期叫做静态绑定
运行期叫做动态绑定
Animal a= new Cat();

注: 多态的典型代码: 父类型的引用指向子类型的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值