面向对象三大特征:封装性、继承性、多态性

目录

一、封装性

1、封装与隐藏

2、体现

3、四种权限修饰符

4、代码举例

二、继承性

1、概念

2、为什么要有继承

3、使用规则

4、重写

4、代码举例

三、多态性

 1、什么是多态性

2、虚拟方法

3、前提

4、多态是“晚绑定”,是运行时行为

5、使用

 6、代码例子


一、封装性

1、封装与隐藏

属性和功能封装起来,不允许外部干扰,当要使用那些功能或属性时,提供相应的接口

2、体现

(1)将类的属性私有化(private),提供get和set方法来调用,完成相应设置和获取的操作

(2)私有方法

(3)单例设计模式,将构造器私有化

(4)缺省的类,无法被包外使用。

3、四种权限修饰符

4、代码举例

package com.p4;

/**
 * @description:
 * @program: Java_1
 * @author: xichen
 * @create: 2022-06-15 18:32
 **/
public class Person {
    private String name;//名字
    private int age;//年龄
    private  boolean gender;//性别,ture为男性,false为女性
    //无参构造器
    public Person(){

    }
    //有参构造器,与上面无参的形成重载。
    public Person(String name,int age,boolean gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName(){
        return name;

    }
    public void setName(String name){
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }
}

使用private对其属性、方法进行封装,私有化,外部要使用时,需要通过get、set方法,或者调用其他public方法,而这些方法中,要使用到私有属性或私有方法,才能达到效果。

二、继承性

1、概念

通过extends关键字,把两个类关联起来,如类A extends 类B,那么称类A是子类,类B是父类,子类中拥有着父类的属性、方法,如果父类的属性、方法,子类不能直接调用,但它们依然存在于子类中,子类可以拥有直接的属性和方法。

2、为什么要有继承

  (1)减少代码冗余

程序中,有些内容的属性和方法被重复出现,则使得代码冗余,为此,提供继承,把这些重复的属性、方法包装成父类,又子类去继承,从而省去了重新书写的麻烦,减少了代码的冗余。

(2)增加扩展性

当想要对程序进行扩展时,只需要对父类进行操作即可,子类也会跟着继承,增加了程序的扩展性,利于功能的扩展。

(3)联系了类与类,为多态性做前提

3、使用规则

        (1)格式calss A extends calss

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基于面向对象编程的学生类示例,体现了继承、封装和多的特: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def get_name(self): return self.name def get_age(self): return self.age class Student(Person): def __init__(self, name, age, student_id): super().__init__(name, age) self.student_id = student_id def get_student_id(self): return self.student_id def __str__(self): return f"{self.get_name()} ({self.get_age()}) - Student ID: {self.get_student_id()}" class Classroom: def __init__(self): self.students = [] def add_student(self, student): self.students.append(student) def get_all_students(self): return self.students def get_student_by_id(self, student_id): for student in self.students: if student.get_student_id() == student_id: return student return None classroom = Classroom() student1 = Student("Alice", 20, "12345") student2 = Student("Bob", 21, "54321") classroom.add_student(student1) classroom.add_student(student2) for student in classroom.get_all_students(): print(student) print(classroom.get_student_by_id("12345")) ``` 在这个示例中,我们定义了一个 `Person` 类,它包含了一个人的基本信息,例如姓名和年龄。`Student` 类继承了 `Person` 类,并添加了一个学生 ID 属。我们还定义了一个 `Classroom` 类,它包含了一个学生列表,并提供了一些方法用于管理学生,例如添加学生和根据学生 ID 查找学生。 在这个示例中,我们使用了封装来隐藏类的内部细节。例如,我们使用了 `get_name` 和 `get_age` 方法来获取 `Person` 类中的姓名和年龄属,而不是直接访问这些属。这样可以确保类的内部实现细节不会被外部访问者所知道。 我们还使用了多来处理不同类型的对象。例如,在 `Classroom` 类中,我们可以添加任何类型的学生对象,只要它们继承自 `Person` 类。在 `Classroom` 类的 `get_student_by_id` 方法中,我们可以返回 `Student` 对象,因为它继承自 `Person` 类,并具有 `get_student_id` 方法。 继承也是面向对象编程的一个重要特。在这个示例中,我们使用 `Student` 类继承了 `Person` 类的属和方法,从而避免了代码重复。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值