面向对象笔记

new一个类即为对象

使用new时除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。

构造器(构造方法)

类中的构造器也叫构造方法,是在创建对象是必须调用的,并且构造器有以下两个特点;

  1. 必须与类的名字相同
  2. 必须没有返回类型,也不能写void

super和this

super调用父类的的构造方法,必须在构造方法的第一个

super必须只能出现在子类的方法或者构造方法中

super和this不能同时调用构造方法

重写

重写是方法的重写,和属性无关

子类重写父类的方法

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以放大
  4. 抛出的异常:范围可以缩小,不可以放大

 重写即为子类和父类的方法一致,方法体不同

alt+insert即可补充各种方法,override即为重写

多态

多态是方法的的多态,属性没有多态

即同一方法可以根据发送对象的不同而采用多种不同的行为方式

一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多

多态存在的条件

  1. 有继承关系
  2. 子类重写父类方法
  3. 父类引用指向子类对象    Father a=mew Son

 父类转换为子类需要强制转换     强制转换可能会丢失一些东西

面向对象的三大特点:封装,继承,多态

abstract抽象

抽象类不能去实例化(不能new一个抽象类),只能通过子类去实现它(抽象类只有被继承才能使用):约束!有些情况下,父类只知道其子类应该包含怎样的方法,而无法准确知道这些子类如何去实现该方法。也就是说抽象类是约束子类必须要实现哪些方法,并不关注子类如何去实现它(不关注实现细节)。

抽象类中有构造方法,但是不能new,其构造方法是给子类用的

抽象类里面可以写普通方法,但只要有抽象方法就是抽象类

抽象的抽象:约束!

接口interface

声明类的关键字是class,声明接口的关键字是interface

普通类:只有具体实现

抽象类;具体实现和规范(抽象方法)都有

接口:只有规范!自己无法写方法(专业的约束)约束和实现分离:面向接口编程

接口就是规范,定义的一组规则

接口的本质是契约

接口中定义的属性都是public  static  final的常量(一般不在接口中定义属性)方法都是public  static

接口不能被实例化(new),接口没有构造方法

类实现接口implement   类 implement 接口

实现了接口的类需要重写接口中的方法

内部类

将一个类的定义放在另一个类的定义内部,这就是内部类。而包含内部类的类被称为外部类。

内部类的主要作用如下:

  1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
  2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
  4. 内部类允许继承多个非接口类型

注:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为 outer 的外部类和其内部定义的名为 inner 的内部类。编译完成后出现 outer.class 和 outer$inner.class 两类。所以内部类的成员变量 / 方法名可以和外部类的相同。 

定义成员内部类后,必须使用外部类对象来创建内部类对象,即 内部类 对象名 = 外部类对象.new 内部类();

静态内部类

  1. 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问。
  2. 如果外部类的静态成员与内部类的成员名称相同,可通过 类名.静态成员 访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过 成员名 直接调用外部类的静态成员。
  3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();

 匿名内部类

匿名内部类,顾名思义,就是没有名字的内部类。正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值