面向对象总结(上)
ps:Java面向对象部分和C++有很多相通的地方,又有其特有的语法结构,例如函数重载中,C++形参可以有默认值,而Java中没有;Java特有的GC回收机制导致Java没有析取方法。这只是一部分,但是感觉Java更智能吧。>a
1.类与对象
1)三条主线
①Java类及类得成员
②三大特性(重点)
③其他关键字 : static instanceof interface……
2)面向对象与面向过程
①面向过程强调的是功能行为
②面向对象强调的是封装了功能的对象
2.类的结构之一属性
变量:
* 一 数据类型分类 : 基本数据类型 vs 引用数据类型
* 二 位置分类 : 成员变量 vs 局部变量
*
* 成员变量 vs 局部变量
* 相同点:
* 1.声明的格式:变量的类型 变量名 = 变量值;
* 2.先声明后使用
* 3.作用域:都是在声明它的那对大括号内
*
* 不同点:
* 1.内存:
* 成员变量 :在堆内存中.
* 局部变量 :在栈中
* 2.默认值:
* 成员变量:
* 基本数据类型:
* byte short int long : 0
* float double: 0.0
* char: \u0000
* boolean:false
* 引用数据类型:null
* 局部变量:没默认值
* 3.位置:
* 成员变量:在类中,方法等结构外.
* 局部变量:在构造器中,方法中,代码块中,方法的形参,构造器的形参.
*
* 4.权限修饰符:private 缺省的 protected public
* 成员变量:可以被权限修饰符所修饰
* 局部变量:不可以被权限修饰符所修饰
3.类的结构之一方法
一.方法的重载
1.方法的重载的概念:在同一个类中相同的方法名不同的形参列表构成重载。
说明:
1.方法的重载和权限修饰符,返回值类型,参数名没有关系。
2.不同的形参列表:形参的类型和个数
2.举例
public void say(String name,int age){
}
public void say(int age,String name){
}
//不构成重载 :形参列表一样
public int say(String name,int a){
}
3.如何确定类中某一个方法的调用:方法名 + 形参列表
二.值传递
* 值传递:
* 形参:方法声明时的参数
实参:方法调用时实际传给形参的参数值
*
* 值传递:
1.如果传递的是引用数据类型实际上传递的是地址值
* 2.如果传递的是基本数据类型实际上传递的是变量中的值。
4.封装性
1.面向对象的特征一:封装与隐藏
* 1.为什么要封装性?
* 往往我们通过对象.属性进行赋值。只能对属性的类型和数值范围进行限制。但实际情况中
* 我们所需要的限制条件比较多,而在属性的位置上又不能加以限制。所以做如下操作:
* ①私化属性 :给属性加权限修饰符
* ②通过公共的方法给属性进行赋值 :在方法中可以添加条件限制。
*
* 2.封装性的体现(狭义上 : 私化属性,设置公共的set/get方法
*
* 3.封装性的体现(广义上
* ①.四种权限修饰符:private 缺省的 protected public
②.类的成员:属性,方法,构造器,代码块,内部类。权限修饰符可以用来修饰属性,方法,构造器,内部类
* ③.类只可以被public和缺省的所修饰
2.封装性思想具体的代码体现:
class Animal{
private int legs; //属性私化
/*
* 通过方法给属性赋值
*/
public void setLegs(int l){
if(l == 4){
legs = l;
}else{
legs = 4;
System.out.println("你瞎呀");
}
}
/*
* 通过方法获取属性的值
*/
public int getLegs(){
return legs;
}
}
3.java规定的四种权限修饰符
权限从小到大顺序为:private 缺省的 protected public
5.构造器(C++称构造方法)
1.构造器(或构造方法)
作用:①创建对象 ②初始化对象中属性的值
格式:权限修饰符 类名(形参列表){}
2.使用说明:
- ①.如果类中没显示的定义构造器,那么系统会默认为我们提供一个无参的构造器
- ②.如果类中已经显示的定义了构造器,那么系统将不再提供无参的构造器
- ③.一个类中可以定义多个构造器,彼此之间构成重载
-
- 总结:创建对象必调构造器。
6.属性的赋值顺序
一 属性赋值的方式
1.默认值 2.显示赋值 3.构造器 4.对象.属性/对象.方法
二 赋值顺序 : 1 - 2 - 3 - 4
7.this关键字
- this关键字:表示当前对象
-
- this可以用来调用 : 属性,方法,构造器
-
- this调用属性和方法:
在方法和构造器中往往我们调用属性和类中的方法时都会省略”this.”。但是如果在构造器和
- 方法中局部变量的名字和属性的名字一样,为了加以区分我们会在属性名前加上”this.”
-
- *
- this调用构造器:为了调用本类中其它的构造器
-
- 格式:this(形参列表)
- 说明:
- 1.必须放在构造器的首行
- 2.一个构造器中只能有一个this(形参列表)
- 3.如果一个类中有N个构造器,那么最多有N-1个this(形参列表)