java笔记-----对象

面向对象的三大特征:1、封装   2、继承   3、多态(面向对象就是对某个实例的单独操作)

类与对象

        类是对某一类事物的描述,是抽象的概念上的定义,对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

    一个类可以产生多个对象。

类的定义:

                class    person

                 {

                             int   age;             //成员变量

                             void    shout()          //成员函数

                             {

                                             System.out.println("my  age is "+age);

                             }

                  }

对象的使用

                创建新的对象之后,我们就可以使用“对象名.对象成员”的格式来访问对象的成员(也包括属性和方法)。

               class   TestPerson

               {

                            public    static     void    main(String  []   args)

                           {

                                             Person  p1=new  Person();  //新建person对象

                                             Person   p2=new   Person();

                                             p1.age=-30;

                                             p1.shout();

                                             p2.shout();

                               }

               }

对象的比较

            “==”运算符(对对象的地址进行比较)与equals()方法(对对象的地址中存放的内容进行比较)

匿名对象   new  Person().shout();

     1、我们也可以不定对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象,如     new Person().shout();

      2、如果对一个对象只需要进行依稀方法调用,那么久可以使用匿名对象。

      3、我们经常将匿名对象作为实参传递给一个函数调用

                   例:   public   static    void     getSomeOne(Person   p)

                              {

                                       p.shout();

                               }

模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外部干预),弱耦合(提供给外部尽量少得方法调用)

一个类中的私有变量不可以让外部的类应用。

构造函数的定义与作用

构造方法的特征
–它具有与类相同的名称;
–它不含返回值;
–它不能在方法中用return语句返回一个值

注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调用了。

构造方法的作用:当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。

构造方法可以对类中的成员变量初始化,构造函数与类同名。

    当程序中有 有参数的构造函数时,编译器就不会再自动产生不带参数的构造函数,当调用时就找不到不带参数的构造函数。

this是什么?

1、如果func2方法被调用 ,一定是事先已经有了一个存在的对象,func2被作为那个对象的方法被使用。
2、在func2内部能引用别的对象 ,同样也能引用func2所属的那个对象。
3、在func2中,自己所属的那个对象的引用名称是什么呢? this关键字在java程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。 
                                public        void      func1()
                                  {
                                         System.out.println(name);
                                   }
                                  public       void       func2()
                                  {
                                               Person    a2=new    Person("a2");
                                               a2.func1();
                                                this.func1();           //this表示当前类 
                                     }

函数的参数传递:按引用传递(引用内存中存放数据的地址函数,函数内部的值发生变化,外部的值也发生变化)

                                按值传递(引用内存中存放数据,函数内部的值发生变化,外部的值不发生变化)

this引用句柄的应用

1、一个类中的成员方法可以直接调用同类中的其他成员,其实我们在一个方法内部使用“this.其他成员”的引用方式和直接使用“其他成员”的效果是一样的。
2、让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的,这样的代码谁看了都能明白这两个变量是彼此相关的。
3、假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。
4、构造方法是在产生对象时被java系统自动调用的,我们不能在程序中象调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。

static 静态方法

1、在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
2、 静态方法不能以任何方式引用this和super关键字。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。

3、 main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。

static静态变量:当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。

        可以通过类名来访问静态成员变量

        例:class  Chinese

                {

                               static  String  country="中国";

                               String  name;

                               int age;

                               void       singOutCountry()

                                {

                                             System.out.println(country);

                                  }

                 }

                class   Testchinese

               {

                           public    static  void     main(String []  args)

                           {

                                     System.out.println(Chinese.country);

                                     Chinese     ch1=new   Chinese();

                                     ch1.singOutCountry();

                                     System.out.println(ch1.country);

                             }

                }

main方法中的数组就是在运行类时传递进去的参数,参数之间用空格分开。

内部类  —在类中直接定义的内部类 

1、嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是嵌套类的成员却不能被嵌套它的类直接访问。
2、在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用。
3、如果用static修饰一个内部类,这个类就相当于是一个外部定义的类,所以static的内部类中可声明static成员,但是,非static的内部类中的成员是不能声明为static的。static的内部类不能再使用外层封装类的非static的成员变量,所以static嵌套类很少使用。

                 例:

                                     class Outer

                                      {

                                             private int size=10;

                                             public class Inner

                                             {

                                                        public void doStuff()

                                                       {

                                                                    System.out.println(++size);

                                                           }

                                              }

                                      }

                                     public class TestInner

                                    {

                                             public static void main( String[] args)

                                            {

                                                 Outer outer = new Outer();

                                                 Outer.Inner inner = outer.new Inner();

                                                   inner.doStuff();

                                                }

                                        }

使用Java的文档注释

1、文档注释以“/**”开始,以“*/”标志结束,相应的信息和批注所对应的位置很重要! 类的说明应在类定义之前,方法的说明应在方法的定义之前。
2、批注参数来标记一些特殊的属性及其相应的说明 。
                       –@author<作者姓名>
                       –@version<版本信息>
                       –@param<参数名称><参数说明>
                      – @return<返回值说明>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值