1、对面向对象的理解:

所有的东西都可以理解为一个具体的对象(世间万物皆对象),某一类具体的东西又可以抽象化,提取共同特征,共同行为,对特征和行为提供了封装特性,同时行为提供了对象之间的通信形式。
2、面向对象的特点:继承,封装,多态

    (1)继承:
       1.提高了代码的复用性
       2.让类与类之间产生了关系,有了这个关系,才有了多态的特性

    (2)封装:

       1.定义: 隐藏对象的属性和实现细节,进对外提供公共访问方式
       2. 好处:将变化隔离、便于使用、提高重用性、提高安全性
       3. 封装的原则:将不需要对外提供的内容都隐藏起来,把属性都

              隐藏,提供公共方法对其访问

    (3)多态:

         定义:对象的多态性是指在一般类中定义的属性或方法被特殊类

                    继承之后,可以具有不同的据类型或表现出不同的行

                    为。 

3、成员变量和局部变量的区别:
   作用范围:成员变量作用于整个类中,局部变量作用于函数中或时语句中
   在内存中的位置:成员变量存在于堆内存中,因为对象的存在,才在内存中存在局部变量存在于栈内存中

4、匿名变量:

(1)对对象的方法只调用一次时,可以使用匿名对象来完成,这样比较简化,

(2)如果对一个对象进行多个成员调用,必须给这个对象起个名字。
(3)可以将匿名对象作为实际参数进行传递

 5、构造函数:
特点:函数名和类名相同、不定义返回值类型、不需要return语句
对象一建立就会调用与之相对应的构造函数
作用:用于给对象进行初始化
当一个类没有定义构造函数时,系统会默认给该类加入一个空参数构造函数

6、构造函数和一般方法的区别:
构造函数和一般函数在写法上不同
在运行上也不同:构造函数是在对象一建立就运行,给对象初始化
而一般函数是对象调用才执行,给对象添加对象具备的功能

7、一个对象建立,构造函数只运行一次
而一般函数可被对象调用多次

8、什么时候定义构造函数?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数


9、构造代码块:
作用:给对象进行初始化,对象一建立就运行,而且优于构造函数执行
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化
构造代码块中定义的是不同对象共性的初始化内容

10、如何理解this?

this代表它所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数,this就代表哪个对象
this的应用:当定义类中的函数时,该函数内部要用到调用该函数的对象时,这时用

this来表示这个对象
this语句用于构造函数间的调用
this语句只能定义在构造函数的第一行,因为初始化要先执行
11、static特点
(1).随着类的加载而加载
(2).优先于对象存在
(3).被所有对象所共享
(4).可以直接被类名所调用

12、实例变量和类变量的区别:
1.存在位置
      类变量随着类的加载而存在于方法区中
      实例变量随着对象的建立而存在于堆内存中
2.生命周期
       类变量随着类的消失而消失
       实例变量随着对象的消失而消失

13、静态使用注意事项
(1).静态方法只能访问静态成员变量,而非静态方法既可以访问静成员变量也可以访问 

非静态成员变量
(2).静态方法中不可以定义this和super关键字(因为静态优先于对象存在,所以静态方

 法中不可以出现this)
(3).主函数是静态的

14、什么时候定义静态变量(类变量)?
当对象中出现共享数据时,该数据被静态所修饰
对象中的特有数据要定义成非静态存在于堆内存中
15、什么时候定义静态函数?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的

16、静态代码块:
格式:
static
{
  静态代码块中的执行语句
}
特点:随着类的加载而执行,只执行一次,并优于主函数。
用于给类进行初始化
17、想保证对象的唯一性:
(1).为了避免其他程序过多建立该类的对象,先禁止其他程序建立该类对象
(2).还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
(3).为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式怎样用代码实现:
(1).将构造函数私有化
(2).在类中创建一个本类对象
(3).提供一个方法可以获取到该对象


class Single
{
  private int age;
  public void setAge(int age)
  {
    this.age=age;
  }
   public int getAge()
   {
     return age;
    }
  private Single(){}
  private static Single s=new Single();
  public static Single getInstance()
  {
      return s;
   }
 }

 class SingleDemo
{
   public static void main(String args[])

  {
        Single s1=Single.getInstance();
        Single s2=Single.getInstance();

        s1.setAge(20);
        s2.getAge();//20
   }
 }