day07面向对象

1.面向对象

面向对象有两个词必须要掌握

类:
	类是对具有相同属性和相同行为的一类事物的描述.任何事物都是类

对象:
	对象是类的具体体现

2.类的定义和对象创建


类的定义:
    public class 类名{
        //属性(成员变量)
        //行为(成员方法)

    }
    
创建对象:
	类名  对象名 = new  类名();
package com.itheima01;
//人类
public class Person {
    //成员变量(属性)
    String name;  //名字
    char sex;     //性别
    int age;      //年龄


    //成员方法
    //吃饭
    public void eat(String food){
        System.out.println(name  + "爱吃" + food);
    }

    //睡觉
    public void sleep(){
        System.out.println("人一天要睡8小时");
    }
}
package com.itheima01;


public class Demo02 {
    public static void main(String[] args) {

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

        //给成员变量赋值
        p.name = "王鑫";
        p.sex = '男';
        p.age = 28;

        //调用方法
        p.eat("鸡蛋");
        p.sleep();

    }
}

3.类的区别

Demo01称为叫测试类
	里面要写主方法
	所有的方法都要写static

Phone称为实体类
	里面不写主方法
	所有的方法都不写static(目前)

4.内存图

4.1一个对象的内存图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMWGAcmQ-1632139950702)(1.内存图.png)]

4.2两个对象的内存图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8HpY2n4G-1632139950704)(2.内存图.png)]

4.3两个变量一个对象的内存图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-av6c5BOT-1632139950706)(3.内存图.png)]

4.4打印对象的效果问题
在实体类中可以用alt+insert生成一个toString()方法

如果没有这个方法,打印对象就显示对象的地址值
如果有这个方法,打印对象就显示对象的内容
//方法toString()
//快捷键: alt + insert (+Fn)
@Override
public String toString() {
    return "Person{" +
            "name='" + name + '\'' +
            ", sex=" + sex +
            ", age=" + age +
            '}';
}

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

定义位置:
	成员变量,定义在类中方法外的变量
	局部变量,定义在方法中的变量

默认值:
	成员变量,有默认值,不赋值也能输出
	局部变量,没有默认值,必须赋值后才能输出
	
内存位置:
	成员变量,存储在堆内存
	局部变量,存储在栈内存
	
加载时间(生命周期):
	成员变量:随着对象的创建进入的堆内存
	局部变量:随着方法的调用进入的栈内存

6.this

作用:
	1.在成员变量和局部变量重名的时候,用来区分成员变量和局部变量
	2.用来在方法中表示调用方法的对象(现在用不上)

7.封装

private

私有的,属于一种封装
可以用来修饰成员变量和成员方法(目前只用来修饰成员变量)
用private修饰之后,成员就只能在本类中使用,不能在其他类中直接使用

提供让别的类使用的方法:
	setXxx():别的类可以使用set方法给成员变量赋值
	getXxx():别的类可以使用get方法获取成员变量的值

8.构造方法

作用:
	构造方法的作用是创建对象的,并可以在创建对象的时候给成员变量赋值
	
格式:
	修饰符 类名(参数){
        
	}
举例:
	public Person(){
        
	}
特点:
	1.构造方法没有返回值类型
	2.构造方法方法名和类名一样
	
注意事项:
	1.如果一个类中没写构造方法,系统会自动有一个空参构造
	2.如果一个类中写了构造方法,系统就不会再提供空参构造
	3.构造方法可以重载,构造方法虽然没有返回值类型但是可以写return用来结束方法

9.标准类制作

以后工作写实体类和现在写的一模一样的格式

package com.itheima02;

public class Student {
    private String name;//姓名
    private int age;    //年龄

    //快捷键 alt + insert
    //构造方法
    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //set get

    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 void eat(String food){
        //23岁的张三正在吃馒头
        System.out.println(age+"岁的"+name+"正在吃"+food);
    }
}


package com.itheima02;

public class Demo {
    public static void main(String[] args) {
        //类名 对象名 = new 类名();
        Student s = new Student();
        s.setName("张三");
        s.setAge(23);

        s.eat("馒头");


        //类名 对象名 = new 类名(参数);
        Student s2 = new Student("李四",24);

        s2.eat("火锅");
    }
}

总结

什么是类?
	
什么是对象?

成员变量和局部变量的区别
	定义位置?
	默认值?
	内存位置?
	生命周期?
	
this的作用?
	
private
	能给谁加这个词?
	加了这个词有什么效果?
	set方法?
	get方法?
	
构造方法
	作用是干嘛的?
	特点是什么?
		1.方法名和类名一样
		2.没有返回值类型

标准类
    public class 类名{
        成员变量

        构造方法

        set/get方法

        成员方法
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值