面向对象小结

suaxi
2020-11-20 / 0 评论 / 166 阅读 / 正在检测是否收录...
1、类与对象

类是一个模板:抽象 对象是一个具体的实例

2、方法

定义 调用

3、对应的引用

引用类型:基本类型(8种)

对象是通过引用来操作的:栈------>堆

4、属性:字段Field 成员变量

默认初始化:

​ 数字: 0 0.0

​ char: u0000

​ boolean: false

​ 引用: null

修饰符 属性类型 属性名 = 属性值

private String name = null;

5、对象的创建和使用
  • 必须使用new关键字创建对象,构造器:Person person = new Person();
  • 对象的属性 person.name;
  • 对象的方法 person.sleep();
6、类

静态的属性 属性

动态的行为 方法

封装、继承、多态
1、封装

高内聚、低耦合

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合:仅暴露少量的方法给外部使用

封装(数据的隐藏)

  • 通常,应该禁止直接访问一个对象中数据的直接表示,而应通过操作接口来访问,这称为信息的隐藏

1、提高程序的安全性

2、隐藏代码的实现细节

3、统一接口

4、系统可维护性

2、继承

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模

JAVA类中只有单继承,没有多继承

  • 继承是类和类之间的一种关系,除此之外,还有依赖、组合、聚合等
  • 在继承关系中,一个为子类(派生类),一个为父类(基类),子类继承父类,使用关键字extends来表示
  • 子类和父类之间,从严格意义上来说应该具有 “is a” 的关系
super注意点:

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

2、super只能出现在子类的方法或构造方法中

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

与 this 的区别

  • 代表的对象不同

    • this:本身调用者这个对象
    • super:代表父类对象的引用
  • 前提

    • this:没有继承也可以使用
    • super:只能在继承条件下使用
  • 构造方法

    • this():本类的构造
    • super():父类的构造
重写

重写:需要有继承关系,子类重写父类的方法

  • 方法名必须相同
  • 参数列表必须相同
  • 修饰符:范围可以扩大,但不能缩小 public>protected>default>private
  • 抛出的异常:范围,可以被缩小,但不能扩大 ClassNotFoundException --> Exception(大)

重写,子类的方法和父类必须要一致,方法体不同

为什么需要重写?

父类的功能,子类不一定需要,或者不一定满足

3、多态

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

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

多态注意事项:

1、多态是方法的多态,和属性没有关系

2、父类和子类有联系 类型转换异常 ClassCastException

3、存在条件:继承关系,方法需要重写,父类引用指向子类 Father f = new Son();

以下情况不能被重写

  • static方法,属于类,不属于任何一个方法
  • final 终类(不能被继承)
  • private 方法(私有的)

类型转换:

1、父类引用指向子类

2、子类 > 父类(向上转换)

3、父类 > 子类(向下转换)需要强转

4、方便方法的调用,减少重复的代码

抽象类

abstract可以用来修饰方法,也可以用来修饰类,如果修饰方法,那么该方法就是抽象方法,修饰类时同理。

抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。

抽象类不能使用new关键字来创建对象,它是用来让子类继承的。

子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

//1、不能new这个抽象类,只能靠子类去实现它:约束
//2、抽象类中可以写普通方法
//3、抽象方法必须在抽象类中
//抽象的抽象:约束
接口

接口的本质就是规范,定义的是一组规则,体现了现实世界中“如果你是......则必须能......”的思想。

作用:

1、约束

2、定义一些方法,让不同的人实现

3、public abstract

4、public static final

5、接口不能被实例化,接口中没有构造方法

0

评论 (0)

取消