面向对象中的类,对象以及面向对象的封装特点

本文对比了面向过程和面向对象两种编程范式的特点,并详细介绍了面向对象的基本概念,包括类和对象的定义、创建及使用,同时探讨了封装、继承和多态等核心特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象和面向过程

面向过程是指一步一步地描述做事情的过程,强调的是事情的过程.
面向对象具体的是找到一个对象,然后让对象去做事情,强调的是这个对象.
面向对象是将复杂的问题简单化,将事情的执行者变成指挥者,并且面向对象的思想是比较符合人类思考问题的思想,这种思想又被称为懒人思想.
面向对象有三大特点:封装,继承,多态.
例如:我吃饭
面向过程的思想就是首先我先去买一些做饭的材料,然后做好饭,然后开始吃饭.
面对对象的思想就是我先去找一个会做饭的人,然后让这个人帮我去做饭.

类和对象
类是指一类抽象事物的集合,是来描述一类事物的.
对象是由类创建出来的具体的事物
类的创建形式: 系统关键字class 类名{ },要注意的是一个文件中只能有一个由关键字public class修饰的类,并且一个文件中可以有多个类,一个类一般会有成员变量和成员方法.
对象的创建形式: 类名 对象名称 = new 类名();
并且可以通过该对象调用类中的成员变量,方式是 对象名称.成员变量
创建一个student类 ,然后在main函数中创建一个该类的对象

public class StudentDemo {
public static void main(String[] args) 
{
Student stu = new Student();//在main函数中创建的对象
}
class Student{              //创建的类
String name;//类中的成员变量
String gender;//类中的成员变量
public void sayHi()//类中的成员方法
{
System.out.println(name+"----"+gender);
}
}

例:创建一个person类,并声明两个person类对象,并分析一下,俩对象在内存中的表现

public class StudentDemo {
public static void main(String[] args) 
{
Person p1 = new Person();//创建p1,并在内存中开辟了一片区域
p1.sayHi;
Person p2 = new Person();//创建了p2,并在内存中开辟了一篇区域
p2.sayHi;
}
class Person{ //创建的person类
String name;  //类中的成员变量
String gender;//类中的成员变量
public void sayHi()//类中的成员方法
{
System.out.println(name+"----"+gender);
}
}

这里写图片描述
类中的局部变量和成员变量
局部变量和成员变量的区别
1.书写的位置不同:局部变量要卸载类的方法中或者方法的声明中,成员变量要写在类以内函数以外;
2.初始化不同的:局部变量是必须初始化的,成员变量是可以不初始化的,当然成员变量在类中声明的时候是可以先赋初值的;
3.内存存在的位置不同:局部变量是存在栈内存中的,成员变量时存在堆内存中的
4.生命周期不同:局部变量是随着函数的压栈而开始,随着函数的弹栈而结束,成员变量是随着对象的生成而开始,随着对象的回收而结束

public class Test01 {
public static void main(String[] args) {
   Person p1 = new Person();
   p1.sayHi();
}
}
class Person{
    String name = "阿猫";//成员变量,这里可以给初始值
    int age = 18;
    public void sayHi() 
    {
        String name = "张三";//局部变量name
        System.out.println(name + "->" +age);

    }
}

注意:这里结果输出的是: 张三->18,为什么会这样?这是因为就近原则,name在取值的时候,先找方法中名字为name的值,再去类中找,所以为了避免这种情况,我们要在name前面加上关键字this,保证name的值是成员变量中的值

System.out.println(this.name + "->" +age);

匿名对象
匿名对象就是指在初始化的时候并未命名的对象

new Person();//匿名对象
new Person().sayHi;//匿名对象调用person类中的方法
new Person().sayHi;//匿名对象调用person类中的方法

要注意的是,上面两个方法中的匿名对象并不是同一个对象,因为new关键字每走一次就会创建一篇内存区域.
面向对象中的封装
封装是指把属性和方法的具体实现给隐蔽起来,提供公开访问的方法
属性的私有化就是其中一种封装的表现形式
属性的私有化就是将成员变量通过系统关键字private的修饰,使外界无法访问到

class Person{
    private String name = "阿猫";//将属性私有化
    int age = 18;
    public void sayHi() 
    {
        System.out.println(this.name + "->" +age);
    }
}

这样在类以外就无法访问到name了,但是如果我们想在类的外面访问并修改私有化的属性,就需要通过在类中写一些借口来进行修改了.
我们可以在类中写一个get 和set方法,来方便外界进行访问和修改

class Person{
    private String name = "阿猫";
    int age = 18;
    public void sayHi() 
    {
        System.out.println(this.name + "->" +age);
    }
    public String getName() //get方法来访问name
    {
        return name;
    }
    public void setName(String name)//set方法来修改name
    {
        this.name = name;//这里面this关键字是为了防止就近原则
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值