/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/

和C++一样,JAVA也是一门面向对象的语言,其基础和核心是类和对象。而面向对象的思想是来源与显示生活,自然在学习时联系现实生活会理解得更深。

1.对象

  首先,什么是对象?

    在现实生活中只要是一个具体的物体或者一个具体的事物就是一个对象。你所看到的任何一个物体,你所想的任何一个物体都是对象,比如:某一台电脑,某一个人

  其次,知道了什么是对象之后便是去描述。你会从哪些方面去描述对象?分别有些什么内容呢?

      某一台电脑
       特征:大小、材质、形状、颜色、CPU、显卡、内存、硬盘、品牌、...
       功能:显示、散热、计算、输入、开机、关机、...
   
       某一个人
       特征:身高、体重、外貌、年龄、性别、姓名、户籍、爱好、特长、...
       行为:吃饭、睡觉、学习、编程、工作、玩、走路、说话、...

2.类的组成

    现实生活中是怎样对对象进行分类的呢?
      根据对象相似的特征和相似的行为(功能、用途)进行分类;生活中的类是抽象的。
  
    程序中的类是怎样的呢?
      程序中的类是根据现实生活中对象的特征和行为(功能/用途),按照程序中类的固定格式进行的抽象定义。
      程序中的类是由两个部分组成:1.属性    2.方法
      属性是根据对象的特征进行定义的;
      Java中类的方法分为两种:1.普通方法   2.构造方法
      普通方法是根据对象的行为(功能、用途)进行定义的。
3.类的基本结构

  public class 类名  {
      //定义属性
      访问修饰符  数据类型  属性名;
  
      //定义普通方法的格式
      访问修饰符  返回值数据类型  方法名(数据类型  参数名,...){  
      }
   }  
   类在Java中只是模板,基本单位,所以不能使用类调用属性和方法,要调用属性和方法需在main函数中进行。

  

 public class Student {
//属性
private String name; private int scro; //构造方法
public Student()
{
//this("未知名字","Java");
scro=0;
}
//普通方法
public void setName(String n)
{
name=n;
} }

Student类

4.实例化对象和调用属性方法的格式
   实例化对象的关键字:new
   格式:
    类名  对象名  =  new  类名();
    类名 对象名  = new  构造方法(参数值,...);
  
   调用属性和方法的格式:
    对象名.属性名
    对象名.方法名(参数值,...);

 public class Student {
private int scro; public Student()
{
scro=0;
} public void study()
{
scro++;
System.out.println(name+"学习中");
} public static void main(String [] args)
{
Student st1=new Student();//实例化
st1.study();//方法调用
}
}

5.构造方法
     定义构造方法的格式:
      访问修饰符  构造方法名(数据类型  参数名,...){
  
      }
      注意:

      1.类会默认提供一个无参数的构造方法;但如果在类中自定义了构造方法,默认的构造方法会被覆盖,无法再继续使用,只能使用你自定义的构造方法。
        2.构造方法不能定义返回值数据类型;
        3.构造方法的名字必须要和类名完全一致。
     构造方法的用途:
        1.实例化对象;
        2.可以给属性设置初始值。

 public class Student {
private String name; private int scro; public Student()
{
scro=0;
} public Student(String name)
{
//this(name,"Java");
this.name=name;
scro=0;
} }

构造方法

6.方法重载

  和C++中函数重载一样,JAVA中也可以进行方法的重载。

  实现方法重载的条件是:
      1.方法名相同
      2.参数的类型、个数、顺序一定要不同
    会根据方法的参数来决定调用不同的方法。

 public class Student {

     public Student()
{
//this("未知名字","Java");
scro=0;
} public Student(String name)
{
//this(name,"Java");
this.name=name;
scro=0;
} }

7.this关键字

  与C++相同,在类的方法中调用属性时,若参数名与属性名相同,可使用this.加以区分

  另 this(参数值,...);   调用对应参数的构造方法。

  那么this到底指的是谁呢?
    谁在调用方法,方法中的this就表示谁。假设a对象名在调用方法,那么方法中的this表示a,如果换成b对象名在调用方法,方法中的this表示b。类似于生活中的"我"这个词。

 public class Student {
private String name; private int scro; public Student()
{
this("Java");
scro=0;
} public Student(String name)
{
this.name=name;
scro=0;
} }

this关键字

JAVA 类和对象基础知识详解的更多相关文章

  1. [Java]Java类和对象内存分配详解

    描述 代码说明: 一.当Person p1 = new Person();第一次被调用时需要做两件事: 1.先判断类加载器是否加载过Person类,如果没有则加载到Person类型到方法区 2.在堆中 ...

  2. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

  3. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  4. Cisco路由技术基础知识详解

    第一部分 请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来) .网卡MAC地址长度是(  )个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A.12  ...

  5. RabbitMQ基础知识详解

    什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...

  6. 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)

    在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...

  7. Java网络编程一:基础知识详解

    网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层   ------------ ...

  8. 2.java面向对象类与类/类与对象之间关系详解

    继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...

  9. JAVA基础知识详解

    1. JVM是什么 JVM是Java Virtual Mechine的缩写.它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机. JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了 ...

随机推荐

  1. ubuntu系统问题解决集

    1.解决ubuntu 14 system setttings失效的问题 sudo apt-get install unity-control-center 2. 支持root用户登录 修改以下配置文件 ...

  2. c#的事件用法——实现下载时发生的事件

    //下载时发出的事件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  3. Your Prediction Gets As Good As Your Data

    Your Prediction Gets As Good As Your Data May 5, 2015 by Kazem In the past, we have seen software en ...

  4. 被误解的 Node.js

    http://www.ibm.com/developerworks/cn/web/1201_wangqf_nodejs/ 被误解的 Node.js

  5. iOS数据库操作之coredata详细操作步骤

    CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/ ...

  6. python3之模块io使用流的核心工具

    1.io概叙 io模块提供了python用于处理各种类型I/O的主要工具,主要有三种类型的I/O:文本I/O,二进制I/O和原始I/O:这些都是通用类型,各种后备存储可使用其中的每一种类型,所以这些类 ...

  7. QTP图片验证/图片比较/二进制流对比法

    图片验证主要是文件对比,其中我们可以利用二进制的方法读取图片信息,然后进行对比,达到对比的效果,本例子利用fso对象的文件流的方法实现,代码如下: Public Function CompareFil ...

  8. 关于内核中spinlock的一些个人理解 【转】

    由于2.6内核可以抢占,应该在驱动程序中使用 preempt_disable() 和 preempt_enable(),从而保护代码段不被抢占(禁止 IRQ 同时也就隐式地禁止了抢占).preempt ...

  9. Linux dd命令中dsync与fdatasync的区别【转】

    在Linux系统中经常会使用dd命令来测试硬盘的写入速度,命令会涉及到两个参数:dsync与fdatasync,本文介绍一下其区别. dd if=/dev/zero of=/tmp/1Gbytes b ...

  10. iptables-25个常用用法【转】

    本文介绍25个常用的iptables用法.如果你对iptables还不甚了解,可以参考上一篇iptables详细教程:基础.架构.清空规则.追加规则.应用实例,看完这篇文章,你就能明白iptables ...