对象学习

来源:互联网 发布:虚拟机网络配置 编辑:程序博客网 时间:2024/05/21 07:59
1.OOP
(1)面向对象编程
(2)我们遇到问题,对问题进行分析,定义对象模型(类);然后,根据模型构造对象,使用对象解决问题。
(3)类和对象
类是构造对象的模型
对象时类的具体化(实例化)




2.类的定义


----语法:


[修饰符]   class   类名{


//成员变量-属性
[修饰符]   数据类型   变量名[=初始值];


//成员方法-行为
[修饰符]   返回值类型   方法名([参数..]){
//方法体:完成某个功能的语句组(解决某个问题的语句组)
}


//主方法是一个特殊的成员方法
//主方法是类程序执行的入口
public static  void  main(String[] args) {



}


//构造器(构造方法):创建对象的工具
//注意:构造器名必须和类名一致
[修饰符]   构造器名([参数..]){
//方法体
}

}


举例:
//类
public class Dog {

// 成员变量-属性
public   char     sex;
public   String   name;
public   String   color;
public   String   pz;

// 成员方法-行为
public  void   bark(){
System.out.println(name+"是一只小狗,汪汪汪...");

}

public  void  eatBone(){
System.out.println(name+"是一只小狗,吃骨头");
}

public  void  yaoWeiBa(){
System.out.println(name+"是一只小狗,摇尾巴");
}

// 构造器(构造方法):创建对象的工具
public  Dog(){

}
}




3.对象的使用
(1)声明一个类类型的变量
类名    对象名;
举例:
Dog   d;
(2)创建一个对象
对象名=new    构造器名(参数);
举例:
d=new  Dog();
(3)给对象的属性赋值
对象名.属性名=值;
举例:
d.name="旺财";
d.sex='公';
d.color="灰色";
d.pz="中华田园犬";
(4)使用对象的属性和方法
对象名.属性名
对象名.方法名(参数)
举例:
System.out.println(d.name);
System.out.println(d.sex);
System.out.println(d.color);
System.out.println(d.pz);
d.bark();
d.eatBone();
d.yaoWeiBa();




4.成员变量和局部变量
(1)成员变量
定义位置:类中,方法体外
缺省值:有
修饰符:可以使用很多修饰符
作用域:整个类


(2)局部变量
定义位置:方法体内
缺省值:无
修饰符:只能使用final
作用域:当前方法体


5.参数
(1)定义:只能定义在小括号里
语法:
数据类型 参数名,数据类型 参数名......数据类型 参数名
(2)作用:
在调用方法时,将数据动态传入到方法体内使用
(3)作用域:
当前方法的方法体
(4)传参要注意:
数量、顺序、数据类型
(5)概念:
形参:在小括号里定义的参数
实参:调用时传递的数据




6.重载
(1)方法的重载
在同一个类中,出现方法名相同,参数不同的现象。


原则:
同一个类中
方法名相同
参数不同


注意:参数名不能作为判断参数是否相同的依据。


参数不同:
a.参数数量不同
b.参数数量相同,按照顺序依次对比,至少有一个数据类型不同


(2)构造器(构造方法)的重载
在同一个类中,出现多个构造器,参数不同的现象。


原则:
同一个类中
参数不同


注意:参数名不能作为判断参数是否相同的依据。


参数不同:
a.参数数量不同
b.参数数量相同,按照顺序依次对比,至少有一个数据类型不同


7.构造器
(1)作用:构造对象的工具
(2)执行过程:
new   构造器(参数);




a.根据定义的类,创建一个对象。
b.传参
c.执行构造器的方法体:初始化当前对象的属性
d.返回对象


8.返回值类型
(1)无返回值:void
return;//仅仅表示结束方法体


(2)有返回值:数据类型
return  数据;//结束方法体,返回一条数据


(3)区别:
System.out.println();//仅仅是打印操作
return语句;//返回值操作




9.this
(1)当成员变量被局部变量或者参数隐藏时,我们要向访问被隐藏的成员变量,需要使用this来访问。
使用:this.成员变量名
含义:this表示当前对象(当前执行的方法所属的对象)


(2)当一个构造器中的部分代码和另一个构造器的方法体代码完全相同时,我们可以减少重复代码的定义,使用this来调用另一个构造器的方法体。
使用:this(参数);
含义:当前类的构造器


10.static


使用static修饰的成员方法或成员变量称为类成员
没有static修饰的成员方法或变量称为实例成员
类成员属于类所有,不用创建对象也可以调用
实例成员属于实例(即对象)所有,必须创建对象才能被对象所调用
类成员是该类所有的,所有该类创建的对象包括该类都可以使用


静态方法中不能使用this 
因为静态方法在对象创建之前就存在


静态代码块:
static {
}//只会在首次调用类时执行一次;可以有多个,依次执行
调用类的静态常量是,类不会被加载(即静态语句块不会被执行)


代码块
{
}
在静态代码块后  构造方法前执行  每次调用构造方法都会执行


11.import:导入类,可以访问该类的某些方法和变量


格式 : import 包名.类名(类名为*表示导入该包下所有类(仅该包下不包括子包))(永久导入)


包名.类名可以直接访问该类 (临时导入)


12.访问权限修饰符
类:
类前面只能有public和缺省 两种权限修饰符
缺省只能被同包下的类所使用
public可以被其他包导入使用


成员:
private  只能在该类下使用
缺省的  只能在本来和同包下其他类使用
protected  不讨论继承的情况下和缺省一样(缺省不能被其他包的子类继承,protected可以被其他类的子类所继承)
public  公开的  能被所有类使用  需要导入

0 0