OOP的三大特性是什么?作用是什么?接口?抽象类?super()关键字

2 篇文章 0 订阅
1 篇文章 0 订阅

OOP的三大特征分别是:

  1. 封装性
  2. 继承性
  3. 多态性

一、封装性

封装是面向对象编程的核心思想,将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。

封装性的设计思想

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

封装的作用
  1. 保证了类内部数据结构的完整性
  2. 应用该类的用户不能轻易的操作此数据结构
  3. 只能执行类公开的数据(public)
  4. 避免外部类对内部数据的影响,提高程序的可维护性
  5. 提高代码的安全性以及复用性
封装性的具体体现

体现一:将类的属性私有化(private),同时提供公有的(public)方法来获取get和set此属性的值

private double radius;
public void setRadius(double radius){
	this.radius = radius;
}
public double getRadius(){
	return radius;
}

体现二: 不对外暴露的私有方法(private)私有化方法,在内部自己调用。

体现三:单例模式(将构造器私有化),外部不可进行调用。

体现四:如果不希望类在包外被调用,就设置为包内使用权限。

补充理解:四种权限修饰符等价于封装性

二、继承性

是

说明:下边三个类,中都具有person类中的属性,所以通过继承的方式减少代码量
继承性的好处
  1. 减少代码的冗余,提高代码的复用性
  2. 便于功能的扩展(相同功能属性,可在父类定义)
  3. 为多态性提供前提(多态使用前提必须继承)
继承性的格式
class A extends B{}

A:子类、派生类
B:父类、超类、基类

子类继承父类之后的不同点
  1. 子类继承父类后,就获取了父类中声明的所有的属性和方法。

  2. 子类继承父类后,还可以声明自己特有的属性和方法。

     注意:父类中声明为private的属性和方法,使用子类不能调用父类
    
Java中继承性的说明
  1. 一个类可以被多个子类继承。
  2. 一个子类只能有一个父类(单继承性)。
  3. 子类和父类是相对的概念。
  4. 子类直接继承的父类,称为间接父类。间接继承的称位:间接父类。
  5. 子类继承父类以后,就获取了父类及间接父类中声明的方法和属性。
    在这里插入图片描述

三、重写(Override)

规定:

  1. 方法名相同
  2. 形参列表相同(个数和类型)
  3. 返回值相同
  4. final修饰方法不可以被重写

注意:

  1. 方法为静态时,不可被重写
  2. 子类如果要写父类的方法,子类的修饰权限一定大于父类权限 private default protected public
  3. 父类中要被重写的方法一定不能是private

四、对象的类型转换

对象的类型主要包括向上转型和向下转型
向上转型
父类 变量名 = new 子类

父类的引用,引用了子类的对象称为“向上转型”。由于向上转型是从一个较具体的类到抽象的类的转换,所以总是安全的。

向上转型发生的三个时机
  1. 直接赋值 Animal animal = new dog(“assa”);

  2. 传值

     	 	 Animal animal = new Animal("assa");
     		func(animal);
     				
            Dog dog = new Dog("sadasd")
     		func(dog);
    
     		func(new Dog("dsa"))
    
  3. 返回值

向下转型

不是所有的对象都可以向下转型,只有当这个对象原本就是子类对象时,通过向上转型得到的时候才能够成功转型

Fruit fruit = new Apple();
Apple apple = (Apple)fruit;

说明:做向下转型时,必须做向上转型,并且向下转型不安全。

五、动态绑定

  1. 一定要发生向上转型(父类引用 引用 子类对象)
  2. 父类和子类有同名的重写/覆盖/覆写方法
  3. 通过父类的引用,来调用子类和父类的这个同名的覆盖方法,此时就会发生动态绑定,也叫运行时绑定
  4. 在构造方法中,也可以发生动态绑定

六、多态性

父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。

多态性的前提
  1. 要有类的继承
  2. 要有子类对父类方法的重写
多态的好处
  1. 类调用者对类的使用成本进一步降低。
  2. 能够降低代码的 “圈复杂度”, 避免使用大量的 if - else。
  3. 可扩展能力更强。

七、抽象类(abstract)

包含抽象方法的类就是抽象类,abstract是定义抽象类的关键字。抽象类存在的意义就是被继承。

abstract  修饰的方法叫抽象方法,可以不用具体实现
抽象类的作用和注意事项
  1. 抽象类可以被继承,也可以向上转型,动态绑定
  2. 抽象类不可以被实例化
  3. 抽象类中的方法一定要在子类中重写
  4. 抽象类存在的意义就是被继承,因为根本不能被实例化
  5. 如果是②抽象类继承了一个①抽象类,可以不同重写抽象方法,但是③抽象类继承②就需要写两个抽象方法
  6. 抽象方法不能是private
  7. 可以包含普通的方法,但是只能被继承才能调用
  8. 抽象类不能被final修饰

八、接口(interface)

接口是抽象类的延伸,将其可以看作是纯粹的抽象类,接口中所有方法都没有方法体。

interface I+接口名{}

interface:定义为接口关键字

接口的作用和说明事项
  1. 接口当中的抽象方法默认是public abstract 不能有具体实现

  2. 不能被实例化

  3. 接口当中的方法默认是 public static final

  4. 接口和类之间的关系是implements,此时接口中的所有方法 都需要重写

  5. 也可以发生向上转型

  6. JDK1.8kaishi ,接口中的方法可以实现,但是需要用default修饰

  7. 在java中一个类可以实现多个接口

  8. 类和接口是implements 接口和接口之间是extends

     在街口中定义的任何字段都自动是static和final
    
接口与集成

Java中,不允许出现多重继承,但是可以使用接口来实现多继承。

一各类可以实现多个接口,使用关键字implements。
	class  类名 implements  接口1 , 接口2,···,接口n
接口与接口之间继承使用extends
interface intf1{

}

interface intf2 extends intf1{

}
自定义数据类型排序

需要实现comparable接口并且重写compareTo方法。

九、super() 关键字

super()关键字 :父类对象的引用
  1. super()调用父类的构造方法
  2. super.data 调用父类的成员属性
  3. super.方法 调用父类的成员方法
  4. static{ }先执行 并且只执行一次
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值