oop(面向对象编程)

一、面向对象编程(oop)的概念

面向对象编程(Object Oriented Programming, OOP是一种编程范式,它将计算机程序视为对象的集合,每个对象都可以接收消息、进行数据处理和与其他对象交互。面向对象编程的核心概念是类和对象,类定义了对象的属性和行为,对象是类的实例。面向对象编程方法尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程。面向对象编程的优点包括重用性、灵活性和扩展性。它能够提供模块化、可重用和易于维护的代码结构。

二、面向对象编程(oop)的特性

1.继承


子类自动继承父类的属性和方法,并可以添加新的属性和方法。

父类 Animal(属性和方法):


package cn.lnfvc.ken;

public class Animal {

private Stringname;

private int age;// 将age声明为int类型

    // 无参构造函数

    public Animal() {

}

public StringgetName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {// 返回类型改为int

        return age;

}

public void setAge(int age) {

this.age = age;

}

public Animal(String name,int age) {// 将age参数类型改为int

        this.name = name;

this.age = age;

}

@Override

    public StringtoString() {

return "Animal{" +

"name='" +name +'\'' +

", age=" +age +// 去掉了引号

                '}';// 修正了拼写错误

    }

}

子类 Mao1(属性和方法):


class Mao1 extends Animal {

private boolean isEyes;

public Mao1() {

super();

}

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

super(name, age);

this.isEyes = isEyes;

}

public void setEyes(boolean isEyes) {

this.isEyes = isEyes;

}

public boolean isEyes() {

return isEyes;

}

@Override

    public StringtoString() {

return "Mao{" +

"name='" + getName() +'\'' +

", age=" + getAge() +

", isEyes=" +isEyes +

'}';

}

}

Mao1 类继承自 Animal 类,这意味着所有 Mao1 对象都是 Animal 对象,但不是所有 Animal 对象都是 Mao1 对象。

2.多态

同一操作作用于不同的对象可以有不同的解释和执行结果。


class  CatTest {

public static void main(String[] args) {

Mao1 bigMao =new Mao1();

bigMao.setName("大毛");

bigMao.setAge(20);// 直接设置年龄为int类型

 bigMao.setEyes(true);

Mao1 mao =new Mao1();

Animal cat =new Animal();// 创建一个Animal对象

         System.out.println(bigMao.toString());// 打印bigMao对象的字符串表示

        System.out.println(mao.toString());// 打印mao对象的字符串表示

        System.out.println(cat.toString());// 打印cat对象的字符串表示

    }

}

bigMao 和 mao 是 Mao1 类型的引用,指向 Mao1 对象,调用 toString 方法时执行的是 Mao1 类中重写的版本。cat 是 Animal 类型的引用,指向 Animal 对象,调用 toString 方法时执行的是 Animal 类中定义的版本。

输出结果:

image

3.封装

将客观事物封装成抽象的类,并隐藏实现细节,使得代码模块化。


public class Book {

//    书名

    private  Stringname;

//    价格

    private double price;

//    作者

    private Stringauthor;

//    类目

    private  Stringtype;

//    右键生成 构造函数

    /**

*

    * @param name

    * @param price

    * @param author

    * @param type

    */

私有成员变量:所有成员变量(name, price, author, type)都被声明为 private,这意味着它们不能被外部类直接访问。


public Book(String name,double price, String author, String type) {

this.name = name;

this.price = price;

this.author = author;

this.type = type;

}

public StringgetName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

this.price = price;

}

public StringgetAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public StringgetType() {

return type;

}

public void setType(String type) {

this.type = type;

}

公共方法:提供了公共的 getter 和 setter 方法来访问和修改私有成员变量。这些方法允许受控的访问和修改对象的状态。


@Override

public StringtoString() {

return "Book{" +

"name='" +name +'\'' +

", price=" +price +

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

", type='" +type +'\'' +

'}';

}

@Override public String toString():重写了 Object 类的 toString 方法,用于提供 Book 对象的字符串表示。这个方法返回一个格式化的字符串,包含所有书的属性。


package cn.lnfvc.ken;

public class Text5 {

public static void main(String[] args) {

        Book book =new Book("java基础笔记",99.6,"林信良","编程类");

System.out.println(book.toString());

}

}

构造函数:提供了一个公共的构造函数来初始化对象的状态

输出结果:

image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容