类与对象

第一章 类和对象的关系

1、两种思想
1. 两种思想:
	A. 面向过程(所有的事情都是自己做,亲力亲为)
	B. 面向对象(找人帮我们做事情,人就是对象,它具备做事情的功能)
	
2. 举例:
	打游戏,上王者。分为两种情况:
	a. 自己打,从黑铁到青铜到白银....到王者。(所有的事情都要自己去做,太累了)
	b. 找代练帮我上王者。(代练就是对象,只需要提供对应的钱数据,它会有功能帮我实现)
	
谁是对象?具备有此功能的人或者物品。
2、对应关系
现实世界   						Java世界
=======================================================
手机设计图纸  -----------------> 手机类  	class Phone{ ... }
具体的某个手机 ----------------> 手机对象     Phone iphonex = new Phone();
尺寸、颜色 --------------------> 成员变量(属性)  int size;  String color;
打电话、发短信 -----------------> 成员方法(行为) public void call(){ ...} public void send(){...}
3、类的定义
类当中包含以下内容:
	1. 成员变量(写在类中,方法外的变量)
	2. 成员方法(以前的方法,去掉 static 关键字)
4、类的使用
使用方式: "创建对象,调用成员"

1. 创建对象
	格式:   类名称   对象名称   =  new  类名称();
    例如:   Student  stu   =   new  Student();

2. 调用成员(成员变量和成员方法)
	A. 成员变量的调用格式:	 对象名称.成员变量名称  // stu.age
    B. 成员方法的调用格式:    对象名称.成员方法名称(参数);  //stu.eat();

第二章 内存图

1、结论
结论: 如果方法的参数是类或者数组(引用数据类型)。在方法当中对数据进行修改之后,调用方法的位置是会受到影响的。
生活实例: 你和你的同桌共用一个水杯,你喝了一口,同桌看到少一口,接下来,往里面加一口口水,是有影响的!

对象类型作为方法的参数和返回值的时候:(了解即可)
	如果方法的参数是对象类型。那么传递的是 对象地址值。
	如果方法的返回值是对象类型。那么返回的结果是 对象的地址值。
2、成员变量和局部变量
1. 宏观方向(肉眼可以看到的角度)
	A. 成员变量: 在类中,方法外的变量
	B. 局部变量: 在方法当中的变量,或者是方法定义的小括号上面参数
	
2. 微观方向(计算机的内存角度)
	A. 成员变量: 堆内存,跟着对象走"对象在,成员在。对象亡,成员亡"。 堆内存当中有'默认值'
	B. 局部变量: 栈内存,跟着方法走"方法在,局部在。方法亡,局部亡"。 栈内存当中没有 默认值

第三章 封装性

1、封装性概述
1. 面向对象三大特性
	A. 封装性
	B. 继承性
	C. 多态性
	
2. 常见的封装方式(类当中有 成员变量和成员方法)
	A.成员方法就是一种封装(封装了一些细节的代码)
	B.成员变量的封装,采用的是 private 关键字 (private:私有的)
2、private关键字的由来及使用
1. 为什么需要使用 private 关键字? 
    简单一点说,提高代码的数据安全性。(数据不安全:数据不符合现实生活需求)
    如果不采用 private 关键字。我们是可以使用 对象名称.成员变量名称赋值的。例如: stu.age = -20;
	从Java语法角度而言是没有问题的。但是从现实生活的角度而言,存在问题,一个人的年龄不能是负数!!
    直接赋值不符合现有的需求,所以需要使用 private 关键字把 成员变量 封装隐藏起来。不能直接打点调用。
    这里又会存在一个问题,如果我想要给成员变量赋值,合理的数据值,也不能正确赋值,应该怎么解决?
    采用间接的方式赋值,提供一组 getter 和 setter 方法,取值和存值。(getter 是取值,setter 是存值)
    
2. 如果使用 private 关键字?
     A. 给成员变量的前面加上 private 关键字
     B. 提供一组 getter 和 setter 方法
3、this关键字
1. this 关键字的有什么用?
	当成员变量 和 局部变量,名称相同的情况下。进行区分。
	加上 this 的是成员变量
	不加 this 的是局部变量。
	
2. 就近原则:
	谁离我近一点,我就使用谁。
4、构造方法
1. 构造方法的作用?为什么要使用构造方法?
	两个作用:
		A.无参构造方法。主要是创建对象。
		B、全参构造方法。既可以创建对象,也可以给成员变量赋值。
		
2. 构造方法的调用时机是什么时候?什么时候在调用构造?
    创建对象的时候,就是调用构造方法的时候。
    问题: 成员方法和构造方法,谁先调用? 
    构造方法先调用。"创建对象,调用成员"//创建对象在前(创建对象就是调用构造方法)
    
3. 构造方法的特点: (两点同时满足)  如何辨别构造方法?
    A. 方法名称和类名称相同。
    B. 没有返回值类型,也不要写 void 直接留空。
    //例如: 类的名称叫做 Student. 那么构造方法的写法:  public Student(){ ... }
    
4. 构造方法的注意事项:
	A.如果我们没有写构造方法,系统会默认赠送你一个无参构造方法,只是你看不到而已。作用给你创建对象
	B.如果我们书写了构造方法,系统将不再赠送你构造方法。
5、综合案例

标准类

//定义标准类
//1.成员变量(private修饰)
//2.构造方法(无参构造和全参构造)
//3.成员方法(getter和setter)
public class Cat {

    //成员变量
    private String name;
    private int age;

    //无参构造
    public Cat() {
    }

    //全参构造
    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //成员方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

测试类

//测试类 "创建对象,调用方法"
public class Test {

    public static void main(String[] args) {

        //方式1: 无参构造 + setXxx()方法
        Cat cat01 = new Cat(); //无参构造创建对象
        cat01.setName("加菲猫"); //存值
        cat01.setAge(3); //存值
        String name1 = cat01.getName(); //取值
        int age1 = cat01.getAge();//取值
        //打印输出结果, name1:加菲猫,age1:3
        System.out.println("name1:"+name1+",age1:"+age1);
        System.out.println("===========================");
        //方式2: 全参构造
        Cat cat02 = new Cat("汤姆猫",2);
        String name2 = cat02.getName();//取值
        int age2 = cat02.getAge();//取值
        //打印输出结果, name2:汤姆猫,age2:2
        System.out.println("name2:"+name2+",age2:"+age2);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值