浅谈面向对象理解

60 篇文章 0 订阅
18 篇文章 0 订阅

本周学习了面向对象中的基础知识,一开始只是学习基础概念,对其中的理解并不深入,学习很吃力,后来在老师和同学的讲解下试着理解,现在将理解整理如下:

  • 万物实体皆可为对象则是具有具有共同属性和行为的事物的抽象
  • 类是抽象的对象,对象是实体化了的类
  • 属性:在类中通过成员变量来体现(类中方法外的变量)
    行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

//定义类
public class Phone {
    //编写类的成员变量
    String brand;
    int price;
 
// 编写类的成员方法
    public void call(){
        System.out.println("打电话");
    }
    public void sendMessage(){
        System.out.println("发短信");
}}

对象的使用:

package com.object_01;

public class PhoneDemo {
    public static void main(String[] args) {
     /*创建对象
格式:类名 对象名 = new 类名();*/
     Phone p = new Phone();
     /*使用对象
1:使用成员变量
格式:对象名.变量名*/
        System.out.println(p.brand);
        //调用变量brand,因为未赋值,此时返回堆堆内存默认值,String类型默认值“null”
        System.out.println(p.price);
        //price同上,int类型默认值“0”

        //如果赋值
        p.brand = "华为";
        p.price = 2999;
        //再次输出
        System.out.println(p.brand);
        System.out.println(p.price);

/*2:使用成员方法
格式:对象名.方法名()*/
        p.call();
        p.sendMessage();
    }
}
  • 栈内存(存储局部变量)
    定义在方法中的变量,例如:arr   使用完毕,立即消失
    
    堆内存(存储成员变量)
    存储new出来的内容(实体,对象)
    数组在初始化时,会为存储空间添加默认值数组在初始化时,会为存储空间添加默认值
    整数:默认值0
    浮点数:默认值0.0
    布尔值:默认值false
    字符:默认值是空字符
    引用数据类型(String):默认值是null
    每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
    
    
    
  • 成员变量:类中方法外的变量
    局部变量:方法中的变量
  • 关键字private的使用:

一开始只是单纯的知道这是一个权限修饰符,后面理解以后知道它既可以修饰成员变量又可以修饰成员方法,保护被它修饰的成员不被其他的类使用,也就是说对于别的类来说是隐藏不可见的,确保成员只能在本类被访问。

若想要在其他类中访问被private保护的成员,可以通过:

提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

具体使用如下:

一开始我定义了公开的变量eat 和 dress的花费,隐藏了动漫周边animePeripheral的花费,若是直接在测试类里调用则会隐藏animePeripheral,不可见。

所以要用setter 设置、getter 获取成员变量的值。

在 setAnimePeripheral 方法中,我们定义成员变量发现没有这种定义方法,a = a  ×

于是我们引入了this 关键字,解决局部变量隐藏成员变量。

 

最后代码展示如下:

package com.object_09;
//声明一个花费类型Cost
public class Cost {
    //成员变量
    public int eat;  //公开一个吃的花费
    public int dress;  //公开一个穿的花费
    private int animePeripheral = 250; //隐藏一个动漫周边的花费
//  关键字private作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

//针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
//提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
//提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
    //成员方法
public void show(){
        System.out.println(eat+dress);
  }

    public void setAnimePeripheral(int animePeripheral) {
        this.animePeripheral = animePeripheral;
    }

    public int getAnimePeripheral() {
        return animePeripheral;
    }

}
package com.object_09;
//花费类的测试
public class CostDemo {
    public static void main(String[] args) {
    //创建对象
    Cost c = new Cost();

    //赋值并使用变量
    c.eat = 1000;
    c.dress = 200;

    //使用方法
    c.show();
    c.setAnimePeripheral(500);  提供“set变量名(参数)”方法,用于设置成员变量的值
    System.out.println(c.getAnimePeripheral());   //打印最后赋值的AnimePeripheral
    }
}

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值