zoukankan      html  css  js  c++  java
  • JAVA 类和对象基础知识详解

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

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

    1.对象

      首先,什么是对象?

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

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

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

    2.类的组成

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

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

      

     1 public class Student {
     2         //属性
     3     private String name;
     4     
     5     private int scro;
     6 
     7     //构造方法
     8     public Student()
     9     {
    10         //this("未知名字","Java");
    11         scro=0;
    12     }
    13     //普通方法
    14     public void setName(String n)
    15     {
    16         name=n;
    17     }
    18 
    19 }
    Student类

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

     1 public class Student {
     2     private int scro;
     3     
     4     public Student()
     5     {
     6         scro=0;
     7     }
     8     
     9     
    10     public void study()
    11     {
    12         scro++;
    13         System.out.println(name+"学习中");
    14     }
    15     
    16     public static void main(String [] args)
    17     {
    18         Student st1=new Student();//实例化
    19         st1.study();//方法调用
    20     }
    21 }
    View Code

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

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

     1 public class Student {
     2     private String name;
     3     
     4     private int scro;
     5     
     6     public Student()
     7     {
     8         scro=0;
     9     }
    10 
    11     public Student(String name)
    12     {
    13         //this(name,"Java");
    14         this.name=name;
    15         scro=0;
    16     }
    17 
    18 }
    构造方法

    6.方法重载

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

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

     1 public class Student {
     2     
     3     public Student()
     4     {
     5         //this("未知名字","Java");
     6         scro=0;
     7     }
     8     
     9     public Student(String name)
    10     {
    11         //this(name,"Java");
    12         this.name=name;
    13         scro=0;
    14     }
    15 
    16 }
    View Code

    7.this关键字

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

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

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

     1 public class Student {
     2     private String name;
     3     
     4     private int scro;
     5     
     6     public Student()
     7     {
     8         this("Java");
     9         scro=0;
    10     }
    11     
    12     public Student(String name)
    13     {
    14         this.name=name;
    15         scro=0;
    16     }
    17 
    18 }
    this关键字
  • 相关阅读:
    系统设计5:Google三剑客
    lintcode亚麻九题
    设计模式17:单例模式
    设计模式16:迭代器模式
    设计模式15:组合模式
    476. Number Complement
    561. Array Partition I
    627. Swap Salary
    617. Merge Two Binary Trees
    728. Self Dividing Numbers
  • 原文地址:https://www.cnblogs.com/csu-lmw/p/9248168.html
Copyright © 2011-2022 走看看