Java三大特性:封装、继承、多态

发布于:2023-01-22 ⋅ 阅读:(425) ⋅ 点赞:(0)


一、封装

1、什么是封装?

封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

2、封装的优点

  1. 良好的封装能够减少耦合。

  2. 类内部的结构可以自由修改。

  3. 可以对成员变量进行更精确的控制。

  4. 隐藏信息,实现细节。

3、 实现封装的步骤

  1. 修改属性的可见性来限制对属性的访问(一般使用private)
public class Person {
    private String name;//name age 属性设置为私有的
    private int age;
}
  1. 对每个值的属性提供对外的公共方法访问,创建赋取值方法,对私有属性访问
public class Person{
    private String name;
    private int age;public int getAge(){
      return age;
    }public String getName(){
      return name;
    }public void setAge(int age){
      this.age = age;
    }public void setName(String name){
      this.name = name;
    }
}

public方法是外部类访问该类成员变量的入口。
通常情况下,这些方法被称为getter和setter方法。
因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

二、继承

1、什么是继承?

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
eg:猫🐱 is 动物 狗🐕is动物

2、为什么使用继承

从已有的类派生出新的类,称为继承。
在不同的类中也可能会有共同的特征和动作,可以把这些共同的特征和动作放在一个类中,让其它类共享。
因此可以定义一个通用类,然后将其扩展为其它多个特定类,这些特定类继承通用类中的特征和动作。
继承是 Java 中实现软件重用的重要手段,避免重复,易于维护,易于理解。

3、继承的特性

1.使用关键字 extends 让类与类之间 产生继承关系
2.父类私有的成员,子类不能继承,因为根本看不到
3.子类拥有父类非 private 的属性、方法。
4.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
5.提高了类之间的耦合性

耦合性高,代码之间联系紧密,代码独立性差(继承的缺点)

4、继承的类型

1.单继承

class 父类A {
}
 class 子类B extends 父类A {
}

2.多重继承≠多继承(不支持多继承)

class 父类A {
}
 class 子类B extends 父类A {
}
class 子类C extends 父类(子类B){
}

3.不同类继承同一类

class 父类A {
}
 class 子类B extends 父类A{
}
class 子类C extends 父类A{
}

super 与 this 关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。

三、多态

1、什么是多态?

多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。

同一个事件发生在不同的对象上会产生不同的结果。

eg:打印机——>彩色打印机——>彩色图片
打印机——>黑白打印机——>黑白图片

2、多态存在的3个必要条件

1.继承
2.重写
3.父类引用指向子类对象

3、多态实现的方式

1.重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写
方法重写的注意事项:
1、 子类的方法声明要与父类相同
2、子类要重写父类的方法,方法的权限修饰符不能比父类的更低
3, 父类私有的方法,子类不能够进行方法重写

访问权限从高到低:public protected 默认(什么都不写) private

重写与重载

重载(Overload)
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
在这里插入图片描述

2.接口

接口 在JAVA编程语言中是一个抽象类型,是抽象方法的集合 ,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

3.抽象类和抽象方法

抽象方法: 方法只有声明部分,没有方法体

抽象类: 包含抽象方法的类,一定是抽象类 ;使用 abstract 修饰的类,是抽象类

抽象类的特点:

1.抽象类与抽象方法都必须使用 abstract来修饰

2.抽象类不能直接创建对象(不能被实例化)

3.抽象类中可以有抽象方法,也可以没有抽象方法

没有抽象方法也是有意义的,因为不会被其他人直接创建该类对象。

4.抽象类的子类包含(实现了抽象方法的具体类、抽象类)

抽象类和接口的区别

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

  3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范

本文含有隐藏内容,请 开通VIP 后查看