一、对象
1.对象的定义和作用
对象定义:客观存在的实体
作用:用于描述客观存在事物的一个实体。
理解:对象是一个你能够看得到、摸得着的具体实体
万事万物皆对象:只要能看的见、摸得到的物体都能被当成对象
2.对象的组成:
对象组成:属性&方法
属性定义:对象具有的特征(属性)
属性格式:
访问权限修饰符 数据类型 属性名;
属性组成:
访问权限修饰符:
public(公共)、默认(什么都不写)、protected(受保护的)、private(私有的)
作用:描述方法的作用范围
数据类型:八大基本数据类型 、三大引用类型(数组,类,接口)
属性名:变量、数组
方法定义:对象执行的操作(行为)
方法格式:
访问权限修饰符 返回值类型 方法名([参数列表]){
方法体
}
方法组成:
(1)访问权限修饰符:
public(公共)、默认(什么都不写)protected(受保护的)、private(私有的)
(2)返回值类型:
调用方法返回结果的类型,可以是八大基本类型,也可以是三大引用类型,还可以没有返回值,写void
(3)方法名:
方法的名称,小驼峰命名法,做到见名知意
(4)参数列表:
方法可以传递参数,也可以不需要参数,当方法有参数的时候,可以有一个参数,也可以有多个参数,多个参数之间使用逗号(,)隔开
(5)方法体:
方法实现功能的具体代码体现
二、类
1.类的定义和作用
类的定义:具有相同属性和方法的一组对象的集合。
作用:描述一组对象的共同特征和行为
注意:
(1)类名采用大驼峰命名法
(2)对象名采用小驼峰命名法
(3)方法名采用小驼峰命名法
类和对象的关系(1)类是对象的抽象,对象是类的具体
(2)类是对象的模板,对象是类的特例
(3)类和对象的关系就是抽象和具体的关系
(4)类定义了对象将会拥有的特征(属性)和 行为(方法)
(5)类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例。
2 .类的格式
类的格式:
public class 类名{
属性:
访问权限修饰符修饰符 数据类型 属性名;
方法:
访问权限修饰符修饰符 返回值类型 方法名([参数列表]){
方法体
}
}
测试类格式:
package 包名;
public class 测试类名 {
public static void main(String[] args) {
创建对象:
类名 对象名 = new 类名( );
属性赋值:
对象名.属性1=属性值1;
对象名.属性2=属性值2;
对象名.属性3=属性值3;
调用属性:
对象名.属性( );
调用方法:
对象名.方法名( );
}
}
3. 调用方法:
(1)同一类的两种静态方法或非静态可以直接相互调用,不需要用对象调用
package test;
public class Demo {
//定义属性
public String name;
public String gender;
public int age;
//定义方法
public void method1(){
System.out.println("姓名:"+name+" "+"性别: "+gender+" "+"年龄:"+age);
}
public void method2(){
System.out.println("我是方法2");
method1(); //直接调用方法1
}
}
//测试类
package test;
public class DemoTest {
public static void main(String[] args) {
//创建对象
Demo de = new Demo();
//调用方法
de.method2(); //用对象调用方法2,显示的是方法2和方法1的内容
}
}
(2)静态方法只能调用静态方法,非静态方法可以直接调用静态方法和非静态方法
(3)类可以直接调用静态方法,不可以调用非静态方法
package test;
public class Demo {
//定义属性
public static String name;
public static String gender;
public static int age;
//定义方法
public static void method1(){ //静态方法
System.out.println("我是方法1!");
System.out.println("姓名:"+name+" "+"性别: "+gender+" "+"年龄:"+age);
}
public void method2(){ //非静态方法
System.out.println("我是方法2!");
method1(); //非静态可以直接调用静态方法
method4(); //非静态方法可以相互调用非静态方法
}
public static void method3(){ //静态方法
System.out.println("我是方法3!");
method1(); //静态方法只可以调用静态方法
}
public void method4(){ //非静态方法
System.out.println("我是方法4!");
Demo.method1(); //类可以直接调用静态方法不可以调用非静态方法
}
}
//测试类
package test;
public class DemoTest {
public static void main(String[] args) {
//创建对象
Demo de = new Demo();
de.method3(); //对象可以调用静态方法和非静态方法
Demo.method1();//类可以直接调用静态方法,不可以调用非静态方法
}
}
4.方法分类
1.根据方法是否有返回值,将方法定义分为:
(1)无返回值的方法
返回值类型写void,在调用无返回值的方法,不需要用任何变量来接收
(2)有返回值的方法
返回值可以是任意的基本数据类型和任意的引用数据类型,调用有返回值的方法,需要用对应类型的变量来接收,或者直接将返回值输出,有返回值的方法需要在方法体内通过return关键字将结果返回回去
2.根据方法是否有参数列表,将方法定义分为:
(1)无参方法
方法名后面的()中没有任何参数
(2)有参方法
方法名后面的()中有参数,参数的个数可以是1个或者多个,参数的类型可以是基本数据类型,也可以是引用数据类型
3.方法的种类:
(1)无返回值的无参方法:
格式:
访问权限修饰符 void 方法名( ){
方法体
}
(2)无返回值的有参方法:格式:
访问权限修饰符 void 方法名(参数列表 ){
方法体
}
(3)有返回值的无参方法:格式:
访问权限修饰符 返回值类型 方法名( ){
方法体
return
}
(4) 有返回值的有参方法:格式:
访问权限修饰符 返回值类型 方法名(参数列表){
方法体
return ();
}
方法调用原则:
(1)方法需要什么参数,就按照定义的规则传递参数
(2)方法返回什么类型的结果,就用什么类型的变量接收(也可以直接输出返回的结果)
例:创建类和对象,练习基础操作
package test;
public class Human {
//定义属性
public String name;
public String gender;
public int age;
//定义方法
//无返回值无参方法
public void method(){
System.out.println("姓名:"+name+" "+"性别: "+gender+" "+"年龄:"+age);
}
//无返回值有参方法
public void means(String name,String gender,int age) {
System.out.println("我的名字叫:"+name+","+"性别: "+gender+",今年"+age+"岁了");
}
//有返回值无参数方法
public String technique() {
return ("姓名:"+name+" "+"性别: "+gender+" "+"年龄:"+age);
}
//有返回值有参数方法
public String way(String name,String gender,int age) {
return (name +"的性别是"+gender+","+"他今年"+age+"岁了!" );
}
}
//测试类
package test;
public class HuimanTest {
public static void main(String[] args) {
//创建对象
Human hu = new Human();
//属性赋值
hu.name = "张三";
hu.gender = "男";
hu.age = 23;
//调用无返回值无参方法
hu.method();
//调用无返回值有参方法
hu.means("李四", "男", 24);
//调用有返回无参值方法
String resu=hu.technique();
System.out.println(resu);
//调用有返回值有参方法
String result = hu.way("王五","男" , 25);
System.out.println(result);
}
}
5.成员变量和成员方法
成员变量:类的属性
作用:描述对象的特征
成员方法:类的方法
作用:描述对象的行为
6.成员变量和局部变量
成员变量:类中方法外的变量
局部变量:方法中的变量
1. 成员变量作用域
(1)定义在类中方法外部的变量
(2)成员变量可以在声明时赋初始值。
2.局部变量作用域
(1)定义在方法中的变量
(2)局部变量在使用前需要赋值,否则会编译出错。
3.成员变量和局部变量的区别(1)作用域不同:
1. 局部变量的作用域仅限于定义方法中,在方法外无法访问它。
2.成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量。
(2)初始值不同:
1. 对于成员变量,如果在类定义中没有给它赋予初始值,Java会给它一默认值
2.对于局部变量,Java不会给局部变量赋予初始值,因此局部变量必须要定义并赋值后再使用。
(3)在同一个类中,不允许有同名成员变量。在同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量。
(4)局部变量可以和成员变量同名,并且在使用时,局部变量具有更高的优先级。