2024-10-02

面向对象编程(Object Oriented Programming)简称为OOP,是一种基于对象和类的编程范式,通过将程序的功能组织为多个对象,每个对象包含数据和操作数据的方法。

基本概念和特性

类:

类是对象的模板或蓝图,定义了一组具有相同属性和行为的对象。类描述了对象的属性(成员变量)和行为(成员函数),通过实例化类来创建对象。

以下代码定义了一个简单的Cat类,包含两个属性:name(名字)和 age(年龄)

```

public class Cat {

    // 属性  name和age

    private String name; 

    private int age; 


    // 构造方法 (又称构造器,构造函数)

    public Cat(String name, int age) { 

        this.name = name; 

        this.age = age; 

    } 


    // getter 方法,用于获取名字 

    public String getName() { 

        return name; 

    } 


    // setter 方法,用于设置名字 

    public void setName(String name) { 

        this.name = name; 

    } 


    // getter 方法,用于获取年龄 

    public int getAge() { 

        return age; 

    } 


    // setter 方法,用于设置年龄 

    public void setAge(int age) { 

        if (age >= 0) { // 通常年龄应该是非负数 

            this.age = age; 

        } 

    } 


    // 重写 toString() 方法,用于输出对象的字符串表示形式 

    @Override 

    public String toString() { 

        return "Cat{name='" + name + "', age=" + age + "}"; 

    }

对象:

对象是类的实例,每个对象具有独立的属性和方法

对象的属性和方法可以绑定在一起,并限制外部对属性的直接访问,这种特性叫封装,封装通过访问修饰符(如public、protected)实现,提供数据隐藏和保护的机制。封装有助于提高代码的可维护性和安全性。


```

public class Today {

    private String weather; 

    private int date; 

    // 构造方法 

    public Today(String weather, int date) { 

        this.weather = weather; 

        this.date = date; 

    } 

//方法:说明天气及日期

public void introduce(){

System.out.println("今天的天气为"+weather+" 今日是本月的"+date+" 号");

}

}

//创建对象并调用方法

public class THIS {

public static void main(String[] args) {

//创建对象Today

        Today today=new Today("晴",21);

//调用方法

        today.introduce();

}

}

多态:

多态是指同一个操作在不同对象上表现出不同行为的能力。多态可以通过方法重载(同名不同参数的方法)和方法重写(子类重写父类的方法)实现。

以下是一个子类重写父类方法的例子

```

//创建一个父类Animal

public class Animal {

    public void sound() {   

        System.out.println("Animal makes a sound");   

    }   

}   

创建第一个子类Cat

public class Cat extends Animal {   

    @Override   

    public void sound() {   

        System.out.println("喵喵喵");   

    }   

}   

创建第二个子类Dog

public class Dog extends Animal {   

    @Override   

    public void sound() {   

        System.out.println("汪汪汪!");   

    }   

}   


public class Main {   

    public static void main(String[] args) {   

        // 创建 Animal 类的引用,指向 Dog 和 Cat 对象,表现出多态性   

        Animal myDog = new Dog();   

        Animal myCat = new Cat();   


        // 调用 sound 方法   

        myDog.sound();  // 输出显示: 汪汪汪!   

        myCat.sound();  // 输出显示: 喵喵喵   

    }   

}

多态允许同一个方法有不同的实现方式,使得代码更加灵活和可扩展。当需要添加新的功能时,只需添加新的子类或覆盖现有方法,而不需要修改现有代码。

继承:

继承是指一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码重用和层次化组织。通过继承,子类可以扩展或修改父类的行为。继承可以是单继承(一个子类继承一个父类)或多继承(一个子类继承多个父类(部分语言支持))增加代码的可重用性,拓展,修改。在想要拓展功能时不必重写整个对象,只需继承再写新的属性,方法即可。

```

// 父类 Animal

public class Animal { 

// 属性 

protected String name; 

// 构造方法 

public Animal(String name) { 

this.name = name; 

// 方法 

public void makeSound() { 

System.out.println(name + " makes a sound"); 

    } 

}

// 子类 Dog 继承自 Animal

public class Dog extends Animal { 


// 构造方法,调用父类的构造方法 

public Dog(String name) { 

super(name); // 调用父类的构造方法,设置 name 属性 

// 重写 makeSound 方法 

@Override 

public void makeSound() { 

System.out.println(name + " whoops: No! No!"); 

}

}

// 主类 Main

public class Main { 

public static void main(String[] args) { 

// 创建 Dog 对象 

Dog myDog = new Dog("Leon"); s

// 调用 makeSound 方法 

myDog.makeSound(); // 输出: Leon whoops:  No! No!

    } 

}

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

推荐阅读更多精彩内容

  • [TOC] 第一章:面向对象-概述 1.1-什么是面向对象? 概述 面向对象是一种程序设计思想。 程序设计的目的是...
    雷哒哒阅读 312评论 0 1
  • 一、生成随机数的方法 第一种:new Random(); 第一种需要借助java.util.Random类来产生一...
    武家希2023强化班阅读 88评论 0 1
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 779评论 0 1
  • 一些关于面向对象编程(OOP)的基础与示例 一,封装 通过将类的成员生命为私有,可以防止外面的代码直接就能访问修改...
    七笙_1eab阅读 38评论 0 0
  • 八、面向对象 1. 面向对象的三个阶段 面向对象分析 OOA --> Object Oriented Analys...
    250deb66c358阅读 443评论 0 0