Java学习Day19

面对对象编程正常化04

instanceof

  • 俗称亲子关系,能够判断俩个对象之间的关系

 

  • 记住一句话:编译看左边,运行看右边

理解起来就是当

System.out.println(X instanceof Y);
  1. IDEA会首先判断X与Y 是否是父子关系或子父关系,如果是则编译通过,否则编译报错

  2. 通过编译之后, IDEA就会判断X是否是Y 的实例对象或Y子类的实例对象,即X要属于Y的儿子或孙子。

类型转换

 

  • 类型之间的转换时需要遵循:高到低需要强转,低到高不需要

  • 就像图片中的例子

Person obj = new Student();
Student student = (Student)obj
  1. 该例子中的obj是再Student中开辟空间,类型属于Person的(Person高级于Student),因此低转高不需要强转。

  2. 当需要调用到Student类中的方法时,就需要把obj强转为student类,这时就加个(Student)即为强转。

  • 将高级的类转换为低级的类时,有时会丢失信息,如double转为int时,会丢失掉小数点后的数字,所以有时会强转后一些方法会无法使用。

  • 类型转换的目的是为了方便方法的调用,减少重复的代码,为了简洁。

Static 关键字

 

  • 加了static关键字的变量或者方法就会与类一起加载,这时创建对象不需要使用类名.属性名或者方法名就能直接调用

  • 即静态变量/静态方法对于类的所有对象(实例)是共享的

  • 在写代码时看到直接使用类去调用得到就说明这个变量是静态的

代码块

 

  • 代码块分为静态代码块、匿名代码块、构造方法。这三者在Java中的读取顺序是静态>匿名>构造方法。

  • 同时需要注意,静态代码块只会读取一次,当上图中的Person2读取时只有匿名代码块与构造方法。

抽象类

  • abstract + 类就是抽象类,abstract + 方法就是抽象方法

  • 抽象类的子类必须实现父类的所有方法,

  • extends:单继承,Java不能多继承,但是!接口可以多继承

  • 如果子类也加了abstract 那么也可以不写了

  • 感觉就是一家子老赖 public class A extends Action{

@Override public void doSomething() {

} }

  1. 作为父类来规范子类必需的实现,例如将够抽象为父类方法

  2. 因为不同种类的狗在吃的方面有所不同,所以父类没有办法完成具体实现

  3. 就用抽象方法来约束子类去实现自己的方法,抽象方法只能写在抽象类里

抽象类的特点:

  1. 不能new这个抽象类,只能靠子类去实现它:约束!

  1. 抽象方法只能存在与抽象类中,抽象类可以写普通方法

  2. 抽象的抽象:约束

  3. 思考:

    • 抽象类中存在构造器吗? 答:存在,抽象类可以有构造方法,时供子类创建对象时,初始化父类成员使用的

    • 抽象类存在的意义? 答:实现多态的时候,某些子类不需要一些方法,就可以不写,还是为了提高开发效率

2022.10.13 星期四

   快要学完狂神的了,不过感觉还差了好多,还需要补好多知识,继续努力把哈哈

   后面应该看多点文献了,我在思考以后是要往计算机方向靠还是核电方向靠了,真有点迷茫了hh

   最近健身手臂的肌肉摸得到了哈哈哈,感觉真不错,今晚继续去健身咯,希望有一点能看到自己有肱二头肌和腹肌哈哈哈!加油

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值