类和对象

类和对象

面向对象的简述

​ 早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,**将现实世界的事物抽象成对象,现实世界中的关系抽象成类,**继承帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。

对象是类的具体化实现。它将对象作为的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

面向对象开发有三个过程:OOA(面向对象分析),OOD(面向对象设计),OOP(面向对象编程)。

面向对象的三个基本特征:封装(保护内部操作不受破坏),继承(在原本的基础上进行扩充),多态(在一个指定的范围内进行概念的转换)。

类和对象的基本概念

类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。

类与对象的关系:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

开发时:找对象,建对象,用对象,并维护对象之间的关系。

类和对象的定义和使用

在java中定义类,使用的是关键字class进行修饰

[访问修饰符]class   类名{
 	   属性(成员变量,字段)
 	   行为(成员方法)
}

定义一个Person类

class Person{  //类名必须大驼峰
    //成员变量
    public String name;//普通变量
    public int age=20;
    public  static int pp=10;   //静态变量
    //普通成员方法
    public void eat(){//普通成员方法
        int a=10;   //局部变量 存在栈上
        
        System.out.println("eat");
    }
    public static void sleep(){ //静态成员方法
        System.out.println("sleep");
    }
    

上面就是类的定义,但无法使用,相当于只有一个模板。还需要对其进行实例化,将其变成对象

声明并实例化对象

类名  对象名=new 类名();
or
类名   对象名=null;
对象名 =new  类名();

例子

Person per = new Person(); 

当实例化对象之后就可以对其进行响应的操作

对象.属性:表示调用类中的属性

对象.方法:表示调用类中的方法

实例:

class Person{
   
    public String name;
    public int age;
    public void informa(){
        System.out.println("姓名:"+name+" 年龄:"+age);
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Person per = new Person();   
        per.name="张三";
        per.age=18;
        per.informa();
       }
    }

输出的结果

姓名:张三 年龄:18

question:定义类的时候类相当于是模板因此可以不赋值,那么他的初始值是什么?

answer:在定义成员变量的时候,变量没有赋值则为初始值。整型0 浮点型0.0 char类型、\u0000 boolen型false 引用型(类 数组 接口)null

类和对象的存储原理

引用类型与基本类型不同,引用类型需要内存的分配和使用,关键字new相当于分配内存空间通过下图就可以更清晰的理解两者的存储关系。

 Person per = new Person();   
        per.name="张三";
        per.age=18;

以此为例

在这里插入图片描述

如图 per是Person类的引用因此存在栈上 存的是新开辟的对象的地址 ;

它的对象真正存在于堆区中开辟的空间 name 和age开始是默认值;

通过per.name per.age进行访问从而对其进行赋值,

而方法存于方法区中 在堆区上有一个方法表指向方法区的方法从而进行访问

静态变量和静态方法的调用

上述都是普通变量和普通的方法的调用

静态变量和静态方法都是static进行修饰

class Person1{
    static  int age=10;
    public  static void show(){
        System.out.println(age);
    }
}
public class TestDeom3 {
    public static void main(String[] args) {
        Person1 per=new Person1();
        System.out.println(per.age);
        System.out.println(Person1.age);
        per.show();
        Person1.show();
    }
}
都可以打印出 10

静态的变量不是存储于堆区的方法上而是存储于方法区,因此他的访问不依赖于对象。
它的调用可以通过类名.变量 类型.方法进行调用。
也可以通过对象.变量 对象.方法进行 此时合法不合理
下节讲解封装的内容 敬请关注!!!
封装链接

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力争做大牛的小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值