2024-09-27课堂笔记(oop)

一.什么是oop?

OOP是面向对象编程(Object-Oriented Programming)的缩写,它是一种编程范式或编程方法论,其主要特点是使用“对象”来设计软件。在OOP中,对象是数据和能够对这些数据执行操作的方法的封装体。面向对象编程的核心概念包括:

1. 类(Class):类是创建对象的蓝图或模板。它定义了一组属性(变量)和方法(函数),用来描述该类的对象的行为。

2. 对象(Object):对象是类的一个实例。当你根据某个类创建了一个具体的实体时,这个实体就是一个对象。

3. 继承(Inheritance):这是一种机制,通过这种机制,一个类可以继承另一个类的属性和方法。这有助于代码重用,并且可以在不修改原始类的情况下扩展功能。

4. 多态(Polymorphism):多态是指允许子类以一种方式去替代父类的能力。这意味着你可以有一个接口来表示多个不同的底层形式(例如,不同种类的动物都实现了发声的方法,但每个种类的声音都是独特的)。

5. 封装(Encapsulation):封装指的是隐藏对象的具体实现细节,仅暴露公共的接口给外部世界。这样做可以保护对象内部状态免受外部直接访问的影响,同时也可以让外部代码更简单,因为它不需要了解复杂的内部工作原理。

6. 抽象(Abstraction):抽象是指简化复杂的现实问题为用户更容易理解和使用的模型的过程。通常通过提供一个简化的接口来实现,使得复杂的逻辑被隐藏起来。

面向对象编程旨在提高软件开发效率、增强代码可读性及维护性,以及促进代码复用。许多现代编程语言如Java、C、Python等都支持面向对象编程。

二.oop的代码示例。


1.public class Book {

    // 定义私有属性

    private String title;  // 书名

    private double price;  // 价格

    private String author; // 作者

    private String category; // 类目

    // 构造方法

    public Book(String title, double price, String author, String category) {

        this.title = title;

        this.price = price;

        this.author = author;

        this.category = category;

    }

    // Getter 方法

    public String getTitle() {

        return title;

    }

    public double getPrice() {

        return price;

    }

    public String getAuthor() {

        return author;

    }

    public String getCategory() {

        return category;

    }

    // Setter 方法

    public void setTitle(String title) {

        this.title = title;

    }

    public void setPrice(double price) {

        if (price >= 0) {  // 确保价格非负

            this.price = price;

        }

    }

    public void setAuthor(String author) {

        this.author = author;

    }

    public void setCategory(String category) {

        this.category = category;

    }

    // 重写 toString 方法

    @Override

    public String toString() {

        return "Book{" +

                "title='" + title + '\'' +

                ", price=" + price +

                ", author='" + author + '\'' +

                ", category='" + category + '\'' +

                '}';

    }

}

在这个Book类中:

私有变量用于存储书籍的信息。

构造方法用来初始化这些信息。

getter方法用来获取属性值。

setter方法用来设置属性值。

2.public class Animal {

    private String name;

    private int age;

    public String getName() {

        return this.name;

    }

    public int getAge() {

        return this.age;

    }

    public void setName(String name) {

        this.name = name;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public Animal(String name, int age) {

        this.name = name;

        this.age = age;

    }

    public Animal() {

    }

    public String toString() {

        return "Animal{name='" + this.name + "', age=" + this.age + "}";

    }

}

这是一个Animal 类的 Java 代码。这个类有两个私有属性:name 和 age,以及对应的 getter 和 setter 方法。此外,还有两个构造函数:一个是无参构造函数,另一个是带有 name 和 age 参数的构造函数。最后,还重写了 toString 方法来方便地打印对象的信息。

3.package com.flow.eda.lean;

public class Cat {

private Stringtail;

public StringgetTail() {

return this.tail;

}

public void setTail(String tail) {

this.tail = tail;

}

public Cat(String tail) {

this.tail = tail;

}

public Cat() {

}

public StringtoString() {

return "Cat{tail='" +this.tail +"'}";

}

}

这是一个 Cat 类的 Java 代码,它继承了某些动物特有的属性,即尾巴(tail)。这个类有一个私有属性 tail,以及对应的 getter 和 setter 方法。此外,还有两个构造函数:一个是无参构造函数,另一个是带有 tail 参数的构造函数。最后,重写了 toString 方法来方便地打印对象的信息。

4.public class Sonextends Animal {

private boolean isEyes;

public void setEyes(boolean eyes) {

this.isEyes = eyes;

}

public boolean isEyes() {

return this.isEyes;

}

public Son() {

}

public StringtoString() {

return "Son{isEyes=" +this.isEyes +"}";

}

public Son(String name,int age,boolean isEyes) {

super(name, age);

this.isEyes = isEyes;

}

}

这是一个 Son 类继承自 Animal 类,并且增加了一个新的布尔属性 isEyes,用于表示是否有眼睛。这个类定义了相应的 getter 和 setter 方法,以及两个构造函数:一个无参构造函数和一个带有 name, age 和 isEyes 参数的构造函数。此外,还重写了 toString 方法来包含 isEyes 属性的信息。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容