Java之旅 面向对象

面向对象

  • 面向对象VS面向过程

    面向对象:问题由不同的部分组成

    面向过程:问题由顺序步骤组成

  • 面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据。类:某一类对象都有的属性和方法;对象:个性 new实例化

    类是个性抽象出的共性

  • 三大特性:封装,继承,多态

  • Alt+Enter IDEA快捷创建对象

  • 静态方法和类一起加载,非静态方法是类实例化(和对象一起)加载,这样做可能可以优化资源的使用,真正实例化后才占用内存。

  • 值传递和引用传递

  • this--->这个类

  • 引用:栈--->堆(内存地址)

构造器

  • 一个类即使什么都不写,它也会存在一个方法(与类名相同,也不存在返回值) 作用:实例化初始值。使用new关键字,本质是在调用构造器,必须要有构造器。

  • 一旦定义了有参构造,无参就必须显式定义,否则没有无参构造。

  • alt+insert 自动生成构造器

封装

  • private

  • get/set 属性私有,但提供可以操作这个数据的方法。(alt+insert)可以在方法里做安全性的检查,保护数据,隐藏代码的实现细节,统一接口,提高系统可维护性。

继承

  • 继承的本质是对一批类的抽象 extends

  • Ctrl+H 可以查看树 Java中所有类都是继承Object类

  • Java只有单继承,没有多继承!

  • super访问父类属性,私有无法被继承。先调用父类的构造器super(),必须在构造方法的第一个。

  • 方法重写:override(重写)

    静态方法:父类的引用指向了子类,方法的调用只和定义的数据类型有关。

    非静态方法:方法重写,只保留子类的方法。(*public)区别于重载

 

  • 为什么需要重写?

多态

  • 动态编译

  • 实际类型确定,指向的引用类型不一定。对象只能执行对象类型的方法,子类能调用子类和继承父类方法,父类指向子类,但不能调用子类独有的方法。

  • 多态是方法的多态。多态:一个对象的实际类型是确定的,但可以指向对象的引用类型有很多。

  • instanceof 判断是否具有父子关系

  • 上转型:子类对象赋值给父类变量。对象拥有的是属性,变量拥有的是方法。通俗讲就是儿子装爹,本质上还是儿子。 向上转型是字子类对象当作父类来用,本质生说它是子类的对象,但是是父类的引用。所以只能看见父类的成员变量,而子类自己的成员变量就看不到。 也就是说,上转型对象能处理的是自己的和被子类改写的部分,而子类新增的部分看不到。

  • 子转父,向上转型。父转子,向下转型,强制转换。儿子有父亲的方法,变回父亲可以直接变。但是父亲没有儿子的新东西,所以不能直接变成儿子。

static

  • static{} 静态代码块 加载执行一次,和类一块加载。匿名代码块,实例化时加载。

 

  • 静态导入包 final类无法被继承

abstract

  • 抽象类:子类必须实现它所有方法 不能new,只能靠子类实现

  • 抽象方法:只有方法名

  • 抽象方法必须在抽象类中,抽象类中可以写普通的方法。

接口interface

  • 只有规范,自己无法写方法。(完全抽象)

  • 接口中所有方法默认public abstract,所有属性都是public static final

  • implements实现接口 alt+enter:实现所有方法

  • 利用接口可以实现多继承

内部类

  • 获得外部类的私有属性

  • 一个java类中可以有多个class类,只能有一个public class

异常类

  • Error和Exception

  • try/catch 假设要捕获多个异常,从小到大。Throwable所有 快捷:ctrl+alt+T

  • throw 抛出异常 在方法里用,说明该方法处理不了此异常,让其他方法去处理这个异常。(甩锅) 如果throw了一个异常必须捕获或者交给上一级处理。

  • 自定义异常类 继承Exception类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值