/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 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. 滚动条事件,当页面滚动到距顶部一定高度时某DIV自动隐藏和显示

    $(function () {                        //绑定滚动条事件              //绑定滚动条事件            $(window).bind(&q ...

  2. CSUOJ 1170 A sample problem

    J: A Simple Problem Submit Page   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 87     S ...

  3. oracle:delete和truncate

    oracle中清空表数据的两种方法 1.delete from t 2 .truncate table t 区别: 1.delete是dml操作:truncate是ddl操作,ddl隐式提交不能回滚 ...

  4. dedecms列表页调用文章正文内容的方法

    谁说dede:list 标签不能调用body内容,现在就告诉你,直接就可以调用 第一步,打开后台 核心-->频道模型-->内容模型管理-->普通文章,在列表附加字段中添加body. ...

  5. [整理]Win下好用的Markdown工具

    用过haroopad,MarkPad,Sublime + markdown插件,前2款勉强能用,都处于继续开发中,haroopad支持的语法相对较少,提示也不明显,MarkPad还是有不少bug. 后 ...

  6. struts的理解

    1.struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xm ...

  7. iOS 解决汉字联想输入,导致字数限制失效的问题

    字数限制的问题点在于汉语可以无限汉语联想词汇,导致字数限制对于汉字输入就失去的作用.我们的做法是监听键盘联想出来的汉子,将其统计: 1 在viewDidLoad里面监听文本变化的通知 - (void) ...

  8. Linux - awk 文本处理工具一

    AWK AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一:awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命 ...

  9. 第11月第23天 markedTextRange 崩溃

    1. 在对textView.textField限制文字长度时,如果不做特殊处理,当联想文字加上已输入文字超出设定长度时,iOS 7.0系统会崩溃(ios 8.0以上系统做了处理,不会崩溃). http ...

  10. 安装.NET Framework返回1603错误的解决办法

    昨天正在忙其它事情,实然同事向我反馈TFS上的文档无法浏览查看.第一反映是他的机器环境问题,让他试了下其它项目的文档也无法查看,后来在我电脑上也尝试了一下,果然无法查看项目文档,看来是TFS出了问题. ...