JAVA基础7——面向对象

面向对象

面向对象 是基于 面向过程 的编程思想

面向对象思想

面向对象面向过程 区别和联系。
区别:

  • 面向过程 关注执行过程,这个时候我们是执行者。
  • 面向对象 关注的是最终功能,这个时候我们是指挥者。

联系:
面向对象 是基于 面向过程 的。

面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。
面向对象设计
其实就是在管理和维护对象之间的关系。
面向对象特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)

类与对象及其使用

类:是一组相关的属性和行为的集合
对象:是该类事物的具体体现
举例:
类 学生
对象 班长就是一个对象

现实世界的事物
属性 人的身高,体重等
行为 人可以学习,吃饭等

Java中用class描述事物也是如此
成员变量 就是事物的属性
成员方法 就是事物的行为
定义类其实就是定义类的成员(成员变量和成员方法)
格式
成员变量:和以前变量的定义是一样的格式,但位置不同,在类中方法外
成员方法:想以前方法的定义是一样的格式,但是先把static去掉.

创建对象:
类名 对象名 = new 类名();
对象名.成员变量;
对象名.成员方法;

  • 一个java文件中写两个类: 一个是基本类, 一个是测试类.
  • 文件名要跟测试类名一致
class phone {
    String color;   //颜色
    int price;   	//价格
    String brand;   //品牌

    public void call(String name){
        System.out.println("打电话给"+name);
    }

    public void internet() {
        System.out.println("上网");
    }

    public void playGame(){
        System.out.println("玩游戏");
    }
}

class DemoPhone {								
    public static void main(String[] args) {
        phone h=new phone();

        h.price=5000;
        h.color="白色";
        h.brand="华为";
        System.out.println(h.brand+" "+h.color+" "+h.price);

        h.call("x");
        h.internet();
        h.playGame();
    }
}

对象的内存图

一个对象

在这里插入图片描述

两个对象

在这里插入图片描述

三个对象

在这里插入图片描述

/*
手机的属性  颜色,价格,品牌
手机的功能  通信,上网,打游戏

手机类
成员变量    颜色,价格,品牌
成员方法    通信,上网,打游戏
*/

class phone {
    String color;   //成员变量 颜色
    int price;      //成员变量 价格
    String brand;   //成员变量 品牌

    public void call(String name){          //成员方法    通信
        System.out.println("打电话给"+name);
    }

    public void internet() {                //成员方法    上网
        System.out.println("上网");
    }

    public void playGame(){                 //成员方法    打游戏
        System.out.println("玩游戏");
    }
}

class DemoPhone {
    public static void main(String[] args) {
        //类名 对象名=new 类名()
        phone h=new phone();
        //对象名.成员变量
        h.price=4999;
        h.color="白色";
        h.brand="华为";
        System.out.println(h.brand+" "+h.color+" "+h.price);
        //对象名.成员方法
        h.call("x");
        h.internet();
        h.playGame();
        System.out.println("-------------");

        phone x=new phone();
        x.price=3299;
        x.color="蓝色";
        x.brand="小米";
        System.out.println(x.brand+" "+x.color+" "+x.price);

        x.call("y");
        x.internet();
        x.playGame();
        System.out.println("-------------");
        
        phone p=h;
        System.out.println(p.brand+" "+p.color+" "+p.price);
        System.out.println("-------------");
        p.price=7299;
        p.color="黑色";
        p.brand="苹果";
        System.out.println(h.brand+" "+h.color+" "+h.price);    //注意这里打印的是华为,输出结果却是苹果
                                                                //因为操作的是同一个地址值
        p.call("z");
        p.internet();
        p.playGame();
    }
}

成员变量和局部变量的区别

  • 在类中位置不同

    • 成员变量: 在类中方法外
    • 局部变量: 在方法声明中或者方法声明外
  • 在内存中的位置不同

    • 成员变量: 在堆内存中
    • 局部变量: 在栈内存中
  • 生命周期不同

    • 成员变量: 随着对象的创建而存在,随着对象的消失而消失
    • 局部变量: 随着方法的调用而存在,随着方法调用的结束而消失
  • 初始化值不同

    • 成员变量: 有默认初始化值
    • 局部变量: 没有默认初始化值,必须定义赋值,才能使用

注意

  • 局部变量名称可以跟成员变量名称一样,在方法中使用的时候,采用就近原则
  • A方法不能访问B方法内部的局部变量
class variable{
	int num;

	public void show(){
		int num=100;  //注释这里结果会发生改变
		System.out.println(num)
	}
}

输出结果为
100
若注释第五行代码则输出结果为
0

方法的形式参数的调用

基本类型: 形式参数的改变不影响实际参数
引用类型: 形式参数的改变直接影响实际参数

匿名对象

封装(private)

this关键字

构造方法

static关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值