面向对象(一):概述;类与对象;对象的内存图;形参是类类型时的参数传递;类的封装

55 篇文章 0 订阅
37 篇文章 0 订阅

面向对象(一)

1、面向对象的概念

1、概述:面向对象是一种复合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实生活中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 
2、面向对象与面向过程的区别:面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了。面向对象则是把解决的问题按照一定规则划分成多个独立的对象,然后通过调用对象的方法来解决问题。
3、面向对象的特征:
	a、封装性:把对象的属性和行为封装起来,不需要让外界知道具体的实现细节
	b、继承性:主要描述类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行拓展
	c、多态性
4、面向对象的开发
	就是不断的创建对象,使用对象,指挥对象做事情

2、类与对象

1、类与对象的关系:类是对某一类事物的抽象描述,而对象用于表示实现该类事物的个体。
2、类的定义格式:
class 类名{
    成员变量;
    成员方法(){
        
    }
}
3、对象的创建与使用
A、创建对象格式:
	类名 对象名称=new 类名();
B、访问对象成员格式
	对象引用.对象成员
4、以定义学生类及其使用为例
	//定义学生类
class Student{
    String name;        //定义成员变量(属性)
    int age;
    //定义成员方法
    public void introduction(){
        System.out.println("大家好,我是"+name+",今年"+age+"岁!");
    }
}
public class Blog {
    public static void main(String[] args) {
        Student student1 = new Student();//创建第一个对象
        Student student2 = new Student();//创建第二个对象
        student1.age=18; //为第一个对象属性赋值
        student1.name="张三";
        student1.introduction();//调用成员方法
        student2.introduction();//没有给此对象变量赋值,所以其成员变量为默认值
    }
}
运行结果:
大家好,我是张三,今年18岁!
大家好,我是null,今年0岁!

Process finished with exit code 0

3、对象的内存图

例:三个引用二个对象的内存图

在这里插入图片描述

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

	1、成员变量是定义在类中方法外的变量,而局部变量是定义在方法的形参和方法中的变量
	2、成员变量有默认值,局部变量没有默认值;
	3、成员变量在堆内存中,局部变量在栈内存中;
	4、成员变量:随着对象的创建而存在,随着对象的消失而消失,
	   局部变量:随着方法的调用而存在,随着方法调用完毕而消失。

5、方法的形式参数是类名的时候如何调用

形参类型为类类型(引用类型),需要传递的是该类的对象
注意:形参为引用类型时,其值得改变直接影响实际参数
例:
//定义学生类
class Student{
    int age;    //定义成员变量(属性)
    //定义成员方法
    public void introduction(){
        System.out.println("大家好,我今年"+age+"岁!");
    }
}
public class Blog {
    public static void main(String[] args) {
        Student student = new Student();
        student.age=18;     //给成员变量赋值
        set(student);       //调用set方法,成员变量被重新赋值,student.age=20;
        student.introduction(); //打印结果
    }
    public static void set(Student student){ //形参为类类型,传入Student的一个对象
        student.age=20;     //给对象成员赋值
    }
}
运行结果:
大家好,我今年20岁!

Process finished with exit code 0

6、类的封装

A:this关键字
	a:作用:解决局部变量隐藏成员变量
	b:特点:是当前类的对象引用,代表当前类的一个对象。谁调用这个方法,那么该方法的内部的this就代表谁
B:private关键字
	a:是一个权限修饰符
	b:可以修饰成员变量和成员方法
	c:被其修饰的成员只能在本类中被访问
C:setXxx()方法和getXxx方法
	私有属性只能在它所在类中被访问,为了能让外界访问私有属性,Java给我们提供了一些使用public修饰的公有方法,其中包括用于获取属性值的getXxx()方法和设置属性值的setXxx()方法。
举例:
class Student {
    private String name;    //将name私有化
    private int age;    //将age私有化
	//下面是共有的getXxx()方法和setXxx()方法
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        //对传入参数进行检查
        if (age>0&&age<100) {
            this.age = age;
        }else {
            System.out.println("年龄不合法...");
        }
    }
    public void introduction(){
        System.out.println("大家好,我是"+name+",今年"+age+"岁!");
    }
}

public class Package {
    public static void main(String[] args) {
        Student student = new Student();
        student.setAge(-1);
        student.setName("张三");
        student.introduction();
    }
}
运行结果:
年龄不合法...
大家好,我是张三,今年0岁!

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值