java基础-面向对象一

来源:互联网 发布:slowhttptest windows 编辑:程序博客网 时间:2024/05/20 10:22
  1. 类和对象的关系:类用于描述客观世界某一类对象的共同特征,而对象是类的具体存在.Java程序中使用类的构造器来创建类的对象
  2. Java面向对象的三大特征:封装,继承,多态
  1. 类最常见的成员:成员变量,构造器,方法.三种成员变量都可以定义0个或者多个.
  2. Static修饰的成员不能访问没有static修饰的成员
  3. 对于类中的成员变量的修饰符:

修饰符可以省略,也可以是public,protected,private,static,final,其中,public,private,protected只能出现其中一个,可以与static和final组合起来使用

对于类中的方法的修饰符:

修饰符可以省略,也可以是public,protected,private,static,final,abstract其中,public,private,protected只能出现其中一个,abstract和final只能出现其中一个,可以与static组合起来使用

对于类中的构造器:

修饰符可以省略,也可以是public,private,protected中的一种

  6.static关键字:static是一个特殊的关键字,static修饰的成员表示其属于类本身,而不是属于该类的单个实例.通常把static修饰的成员变量和方法称为类变量和类方法.没有用static修饰的普通方法和成员变量则是属于该类的一个实例,称为实例方法和实例变量.

  1. 构造器没有返回值,那么为什么不用void来声明:java中的语法规定,实际上类的构造器室友返回值的,当使用类的关键字new来调用构造器时,总是返回当前的实例,可以把这个实例当做构造器的返回值.所以构造器的返回值总是当前类,无序定义有值的返回值类型,即不需要显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的.
  2. Java中有指针么?

Person p = newPerson();代码产生两个东西,变量p和person对象,p存在于栈内存中,其中存放指向堆内存中person对象的地址.引用变量中的地址指向堆内存中的对象相当于c语言中的指针.java程序不允许直接访问堆内存中的对象,而是通过对象的引用来操作对象.

 9.堆内存中的对象什么时候会消失或者如何去回收堆内存中的对象?

如果没有任何变量指向堆内存中的对象,那么程序也就无法再去访问该对象,此时.这个对象成了垃圾,java回收机制将回收该对象,释放对象所占的内存区.如果想去回收堆内存中的对象,那么需要切断所有引用变量和它之间的关系,即将引用变量赋值为null,则会通知垃圾回收机制回收该对象

  1. This关键字:this关键字总是指向调用该方法的对象
  1. 构造器中引用该构造器正在初始化的对象
  2. 在方法中引用该方法的对象

注意:大部分的时候普通方法访问其他方法,成员变量无需使用this前缀,但如果方法里有个局部变量和成员变量同名,而且需要在这个方法里面去调用被覆盖的成员变量,则必须使用this前缀.

  1. Static修饰的方法中可否使用this关键字?

不可以,static修饰的方法默认使用类来直接调用该方法,如果在该方法中使用this关键字,那么这个关键字就无法指向合适的对象,static修饰的方法不能访问不使用static修饰的普通成员.即无法再静态方法中,通过实例去调用非静态成员变量和方法.

  1. 类中的方法:
  1. 方法的所属性:同一个类中一个方法调用另外一个方法的时候,如果被调用的是普通方法,则默认使用this作为调用者,如果被调用的方法是静态方法,则默认使用类作为调用者.
  2. 方法的参数的值传递:将实际参数的值的副本传入方法中,而参数本身不会受任何影响.
  3. 形参的个数可变:在最后的一个形参的类型后增加(…),表明性钙可以接受多个参数,多个参数值会被当成数组传入.
  4. 递归方法:在一个方法的方法体中再次调用的方法本身.递归一定要向已知方法递归

  5)方法重载:同一个类中的方法名相同,参数列表不同

 13.成员变量和局部变量

Java中根据变量定义的位置的不同,将变量分为两大类,成员变量和局部变量.

类变量和实例变量的异同点:

相同点:

A.变量都遵循相同的命名规则,即是个合法的标识符.B.都定义在类中,方法外

不同点:

  A.定义的位置:成员变量定义在类中,方法外,局部变量定义在方法内.

B.成员变量分为类变量和实例变量.它们的区别是,

B1.表现形式或区分方式: 类变量有static修饰,而成员变量没有.

B2.在内存中的位置个数:类变量在内存中只有一个,而实例变量是没创建一次,java虚拟机都会为其分配一次内存,所以实例变量有多个.类变量在jvm中栈中的方法区常量池,可以被多个类所共享.实例变量取决有类的实例.实例变量存放在堆内存中

B3.访问方式,类变量可以直接通过类名.访问.实例变量需要创建实例变量才可以访问

B4.生命周期不同,类变量的声明周期取决于类的生命周期,从类被类加载器classLoader加载开始直到线程调用结束或者发生重大错误而消失.实例变量的声明周期取决于实例的生命周期,从创建实例变量到这个实例不再被调用,被垃圾回收机制回收.

成员变量和局部变量异同点:

相同点:A.变量都遵循相同的命名规则,即是个合法的标识符

  1. 一个类中不能定义两个同名成员变量,即使一个是类变量一个是实例变量也不行,一个方法中同样也不能定义两个同名的方法局部变量,方法局部变量和形参也不能同名.

同一个方法中不同代码块中的代码块局部变量可以同名

如果先定义代码块局部变量后定义方法局部变量,则也可以同名.

 

局部变量根据定义形式的不同,分为形参,方法局部变量和代码块局部变量

区别 :

  1. 定义的位置,成员变量定义在类中方法外,局部变量定义在方法里

2)作用域:成员变量是整个类中都有效.那么局部变量一般只在该方法中有效

3)初始化和在内存中的运行机制

成员变量:当系统加载该类或者创建该类的实例的时候,系统会自动为成员变量分配内存空间,自动为其指定初始值

局部变量:必须经过显式初始化才能使用,系统不会为局部变量执行初始化,即不会为这个变量分配内存空间,直到程序为这个变量赋初始值时,系统才会为其分配内存,然后将值保存在这块内存中

  1. 同名时候的调用方式:如果在方法中药引用被覆盖的成员变量,this(对于实例变量),类名(对于类变量),局部变量直接通过变量名调用.
  1. 封装:将对象的内部信息隐藏在对象的内部,不允许外部程序直接去访问对象的内部信息,而是通过类所提供的方法来实现对内部信息的操作和访问.

好处:1)隐藏类的实现细节;2)让使用者只能通过预定的方式的方法来访问数据,可以在方法中加入逻辑控制,限制对成员变量的不合理访问.3)可进行数据检查,保证对象信息的完整性4)便于修改,提高代码的可维护性

15.访问控制级表:


  1. 类的继承:实现软件服用
  1. 特点:一个直接父类,多个间接父类
  2. 重写父类方法:

重写:子类包含与父类方法同名的现象

        原则:两同两小一大

原创粉丝点击