面向对象的概念 | 类与对象 | java基础

一、面向对象的概念

关于面向对象的概念问题一直困扰了我好久,虽然看了很多例子但始终不理解(文转理),最近在知乎上看到这么一个回答,我要给他十万个赞,感觉很是精辟
引号内为原文,知乎网友匿名

你的程序要完成一个任务相当于将一个故事
面向过程是编年史
面向对象时纪传体
相对于复杂的程序/宏大的故事,事实证明了,面向对象/纪传体都是更好的表达方式

https://www.zhihu.com/question/27468564?sort=created(附该问题地址)

面向对象有三个特性
1、封装性 (是面向对象核心思想,使程序更安全)
2、继承性 (通过继承,可以不用编写新的类,对原有类进行扩展)
3、多态性 (多态性指的是在程序中允许出现重名现象,即一个类中定义的属性和方法被其他类继承后,可以表现出不同的数据类型或不同的行为,这使得同一属性和方法在不同的类中有不同的意义)

二、类与对象
类和对象的概念:
类就是类别,类别关注共同的属性和行为。
万物皆对象,有些对象是包含着其他对象的,成为类。
例如狗是一个类,狗的属性:体重,毛色;狗的行为:吃狗粮,汪汪叫。
而一只多少体重,什么颜色,这就是对象。
对象是根据类创建的,并且一个类可以创建多个对象。

1、类的定义

想要创建一个对象,首先要定义一个类,用来描述一组对象的共同特征,行为。
类中有成员变量,成员方法。
成员变量:描述对象的特征,又称作属性
成员方法:描述对象的行为,简称方法
方法中也可以定义变量,这种变量称为局部变量。如果两种变量重名,此时通过变量名访问的是局部变量。

class Person{
    int age=10;
    void speak(){
        int age=20;
        System.out.println("大家好,我今年"+age+"岁")
    }
}
//代码结果是20,最简单的类和方法也是这样定义的

有类之后如何创建对象?可以使用new关键字

//创建Person的实例对象
Person p=new Person();

//如何访问对象的成员?   对象名.成员名
p.age=30; //为age赋值
p.speak(); //调用对象的方法

当实例化一个对象的时候,java虚拟机会自动为其初始化,不同类型的变量初始化值也不同。

2、类的封装

定义:将类中的属性私有化,即使用private关键字来修饰,私有属性只能在他所在的类中被访问。
外界如何访问私有属性?
获取属性值 getXxx( )方法
设置属性值 setXxx( )方法

//案例:如果编写一个自我介绍,把年龄输入成负数,是不对的,但是我们又无法制止,因此用到了封装,代码如下
class Student {
    private String name;    // 将name属性私有化
    private int age;        // 将age属性私有化
    // 下面是公有的 getXxx 和 setXxx 方法
    public String getName() {
        return name;
    }
    public void setName(String stuName) {
        name = stuName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int stuAge) {
        // 下面是对传入的参数进行检查
        if (stuAge <= 0) {
              System.out.println("年龄不合法...");   
        } else {
            age = stuAge;   // 对属性赋值
        }
    }
    public void introduce() {
        System.out.println("大家好,我叫" + name + ",我今年" + age + "岁!");
    }
}
public class Example04 {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.setAge(-30);
        stu.setName("李芳");
        stu.introduce();
    }
}
//这样就会在传入参数的过程中起到检查作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值