【JavaSE】类和对象(一)

目录

1、类和对象

1.1、什么是面向对象

1.2、类与对象的基本概念

 1.3、类与对象的定义和使用

1.3.1、定义一个学生类

 2、类的实例化

2.1、 什么是实例化

2.2、类的实例化格式

3、默认初始化 


1、类和对象

1.1、什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。

面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。

在面向对象定义中,也规定了一些基本的特征:

  1. 封装:保护内部的操作不被破坏;
  2. 继承:在原本的基础之上继续进行扩充;
  3. 多态:在一个指定的范围之内进行概念的转换。

对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)OOD(面向对象设计)OOP(面向对象编程)


1.2、类与对象的基本概念

类与对象是整个面向对象最基础组成单元

:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法)

对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠             属性来区分不同对象。

总结:

类和对象的区别:

对象的一个模板对象实例类只有通过对象的才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的


 1.3、类与对象的定义和使用

再Java中定义类,使用关键字class完成。语法如下:

class 类名称 {
        属性(变量);
        行为(方法);
}

实例:定义一个Student类

class Student{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+ name +",年龄:" + age);
        }
}

注意事项:

  • 类名注意采用大驼峰定义
  • 成员前写法统一为public,后面会详细解释
  • 此处写的方法不带static 关键字,后面会详细解释

1.3.1、定义一个学生类

属性:姓名  性别   年龄  学分

方法:来上课:输出'按时上课,不要迟到,如果请假,即使补课'

           写作业:输出'教务系统,完成作业,一旦拖沓,神仙难救'

          要考试:输出:'考试目的,了解学情,人人必考,暴漏问题'

public class Student{
  public String name;
  public String gender;
  public short  age;
  public double score;
 
  public void DoClass(){}
  public void DoHomework(){}
  public void Exam(){}
}

 注意事项:

  1. 一般一个文件当中只定义一个类
  2. main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
  3. Public修饰的类必须要和文件名相同
  4. 不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改

 2、类的实例化

2.1、 什么是实例化

定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自带的内置类型,而类是用户自定义了一个新的类型。

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

2.2、类的实例化格式

类定义完成之后,肯定无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,所以对象的产生格式有两种,如下:

1、格式一:声明并实例化对象

类名称 对象名称 = new  类名称();

当一个实例化对象产生之后,可以按照如上边方式进行类的操作

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

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

 实例:

class Student{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+ name +",年龄:" + age);
        }
}

public class TestDemo{
        public static void main(String args[]){
            Student per = new Student();//声明并实例化对象
            per.name = "张三";//操作属性内容
            per.age = "30";//操作属性内容
            per.tell();//调用类中的tell()方法
}

//运行结果:
   //姓名:张三  , 年龄:30

2、格式二:先声明对象,然后实例化对象:

类名称  对象名称  = null;

对象名称  =  new  类名称(); 

实例:

class Student{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+ name +",年龄:" + age);
        }
}

public class TestDemo{
        public static void main(String args[]){
            Person per = null;//声明对象
            per = new Person();//实例化对象
            per.name = "张三";//操作属性内容
            per.age = 30;//操作属性内容
            per.tell();//调用类中的tell()方法
        }
}

//运行结果:
// 姓名:张三,年龄:30

引用数据类型基本数据类型最大的不同在于:

引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间

以上两种不同的实例化方式有什么区别呢?

我们从内存角度分析。首先,给出两种内存空间的概念:

堆内存:保存对象的属性内容。堆内存需要用new关键字来分配内存空间;

栈内存:保存的是堆内存的地址。(在这里为了分析方便的,可以理解为栈内存保存的是对象的名字)

在任何情况下,只要看见关键字new,都表示要分配新的堆内存空间一旦堆内存空间分配了,里面就会有类中定义的属性,并且属性内容都是其对应数据类型的默认值。 

上面两种实例化对象方式用内存表示如下:

 两种方式的区别在于将步骤1,2结合和分开来写。 

如果使用了没有实例化的对象,结果会如何?

class Student{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+ name +",年龄:" + age);
        }
}

public class TestDemo{
        public static void main(String args[]){
            Person per = null;//声明对象
           // per = new Person();//实例化对象
            per.name = "张三";//操作属性内容
            per.age = 30;//操作属性内容
            per.tell();//调用类中的tell()方法
        }
}

运行结果:

此时,程序只声明了Student对象,并没有实例化Student对象。 


3、默认初始化 

在上边的图片中可以看到,类实例化对象之后,类中的属性,对象中就存在了,但是上述2步骤没有对对象进行初始化时,其中的属性都有默认的值,这是为什么呢?

这是JVM为所开辟的空间进行的初始化,给属性附上相应的默认值。

相应类型对应的默认值为:

数据类型默认值
byte0
char'\u0000'
short0
int0
long0L
booleanfalse
float0.0f
double0.0
referencenull

这里默认初始化只是简单说一下,后边还会详细讲解 


 本篇文章,大部分内容借鉴了博主志见的内容,推荐大家可以点下边链接观看,博主讲解的内容思路特别清晰。
原文链接:https://blog.csdn.net/wei_zhi/article/details/52745268

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值