面向对象基础1

类的定义

类的定义使用关键字:class。格式如下:

/*[修饰符] class 类名{
	属性声明;
	方法声明;
}*/
public class Dog{
    //声明属性
    String type; //种类
    String nickName; //昵称
    String hostName; //主人名称
    //声明方法
    public void eat(){ //吃东西
        System.out.println("狗狗进食");
    }
}
public class Person{
    String name;
    char gender;
    Dog dog;

    //喂宠物
    public void feed(){
        dog.eat();
    }
}

对象的创建

创建对象,使用关键字:new
创建对象语法:

//方式 1:给创建的对象命名
//把创建的对象用一个引用数据类型的变量保存起来,这样就可以反复使用这个对象了
//类名 对象名 = new 类名();
//方式 2:
//new 类名()//也称为匿名对
class PersonTest{
	public static void main(String[] args){
		//创建 Person 类的对象
		Person per = new Person();
		//创建 Dog 类的对象
		Dog dog = new Dog();
	}
}

对象调用属性或方法

对象是类的一个实例,必然具备该类事物的属性和行为(即方法)。
使用"对象名.属性" 或 "对象名.方法"的方式访问对象成员(包括属性和方法)

//声明 Animal 类
public class Animal { //动物类
    public int legs;
    public void eat() {
        System.out.println("Eating.");
    }
    public void move() {
        System.out.println("Move.");
    }
}
//声明测试类
public class AnimalTest {
    public static void main(String args[]) {
        //创建对象
        Animal xb = new Animal();
        xb.legs = 4;//访问属性
        System.out.println(xb.legs);
        xb.eat();//访问方法
        xb.move();//访问方法
    }
}

类的两个成员

成员变量

语法格式:

/*[修饰符 1] class 类名{
 	[修饰符 2] 数据类型 成员变量名 [= 初始化值];
}*/
public class Person{
	private int age; //声明 private 变量 age
	public String name =Lila; //声明 public 变量 name
}

说明:
– 位置要求

必须在类中,方法外

– 修饰符 2(暂不考虑)

• 常用的权限修饰符有:private、缺省、protected、public
• 其他修饰符:static、final

– 数据类型

• 任何基本数据类型(如 int、Boolean) 或 任何引用数据类型。

– 成员变量名

• 属于标识符,符合命名规则和规范即可。

– 初始化值

• 根据情况,可以显式赋值;也可以不赋值,使用默认值

成员变量 vs 局部变量

1、变量的分类:成员变量与局部变量
在方法体外,类体内声明的变量称为成员变量。
在方法体内部等位置声明的变量称为局部变量。

public class Student{
	String name;//成员变量
	public void getName(){
		String info = "wuhu"//局部变量
		System.out.println(info);
	}
}
成员变量 与 局部变量 的对比

相同点
– 变量声明的格式相同: 数据类型 变量名 = 初始化值
– 变量必须先声明、后初始化、再使用。
– 变量都有其对应的作用域。只在其作用域内是有效的
不同点
1、声明位置和方式
(1)实例变量:在类中方法外
(2)局部变量:在方法体{}中或方法的形参列表、代码块中

2、在内存中存储的位置不同
(1)实例变量:堆
(2)局部变量:栈

3、生命周期
(1)实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被 GC 回收而消亡, 而且每一个对象的实例变量是独立的。
(2)局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡, 而且每一次方法调用都是独立。

4、作用域
(1)实例变量:通过对象就可以使用,本类中直接调用,其他类中“对象.实例变量”
(2)局部变量:出了作用域就不能使用

5、修饰符(后面来讲)
(1)实例变量:public,protected,private,final,volatile,transient 等
(2)局部变量:final

6、默认值
(1)实例变量:有默认值
(2)局部变量:没有,必须手动初始化。其中的形参比较特殊,靠实参给它初始化。

方法(method)

方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为函数或过
程。
将功能封装为方法的目的是,可以实现代码重用,减少冗余,简化代码
Java 里的方法不能独立存在,所有的方法必须定义在类里。

声明方法

1、声明方法的语法格式

[修饰符] 返回值类型 方法名([形参列表])[throws 异常列表]{
 方法体的功能代码
}

(1)一个完整的方法 = 方法头 + 方法体。
方法头就是[修饰符] 返回值类型 方法名([形参列表])[throws 异常列表],也称为方法签名。通常调用方法时只需要关注方法头就可以,从方法头可以看出这个方法的功能和调用格式。
方法体就是方法被调用后要执行的代码。对于调用者来说,不了解方法体如何实现的,并
不影响方法的使用。

(2)方法头可能包含 5 个部分
修饰符:可选的。方法的修饰符也有很多,例如:public、protected、private、static、
abstract、native、final、synchronized 等
– 其中,权限修饰符有 public、protected、private。
– 其中,根据是否有 static,可以将方法分为静态方法和非静态方法。其中静态方法又称为类方法,非静态方法又称为实例方法。

返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者。
– 无返回值,则声明:void
– 有返回值,则声明出返回值类型(可以是任意类型)。与方法体中“return ”返回值”搭配使用
方法名:属于标识符,命名时遵循标识符命名规则和规范,“见名知意”
形参列表:表示完成方法体功能时需要外部提供的数据列表。可以包含零个,一个或多个
参数。
– 无论是否有参数,()不能省略
– 如果有参数,每一个参数都要指定数据类型和参数名,多个参数之间使用逗号分隔,例如:

• 一个参数: (数据类型 参数名)
• 二个参数: (数据类型 1 参数 1, 数据类型 2 参数 2)

– 参数的类型可以是基本数据类型、引用数据类型

throws 异常列表:可选

(3)方法体:方法体必须有{}括起来,在{}中编写完成方法功能的代码

(4)关于方法体中 return 语句的说明:
return 语句的作用是结束方法的执行,并将方法的结果返回去

如果返回值类型不是 void,方法体中必须保证一定有 return 返回值; 语句,并且要求该返
回值结果的类型与声明的返回值类型一致或兼容。

如果返回值类型为 void 时,方法体中可以没有 return 语句,如果要用 return 语句提前结
束方法的执行,那么 return 后面不能跟返回值,直接写 return ; 就可以。

return 语句后面就不能再写其他代码了,否则会报错:Unreachable code

补充——方法的分类

按照是否有形参及返回值

无返回值有返回值
无形参void 方法名(){}返回值类型 方法名(){}
有形参void 方法名(形参列表){}返回值类型 方法名(形参列表){}
public class MethodDefineDemo {
    /**
     * 无参无返回值方法的演示
     */
    public void sayHello(){
        System.out.println("hello");
    }
    /**
     * 有参无返回值方法的演示
     * @param length int 第一个参数,表示矩形的长
     * @param width int 第二个参数,表示矩形的宽
     * @param sign char 第三个参数,表示填充矩形图形的符号
     */
    public void printRectangle(int length, int width, char sign){
        for (int i = 1; i <= length ; i++) {
            for(int j=1; j <= width; j++){
                System.out.print(sign);
            }
            System.out.println();
        }
    }
    /**
     * 无参有返回值方法的演示
     * @return
     */
    public int getIntBetweenOneToHundred(){
        return (int)(Math.random()*100+1);
    }

    /**
     * 有参有返回值方法的演示
     * @param a int 第一个参数,要比较大小的整数之一
     * @param b int 第二个参数,要比较大小的整数之二
     * @return int 比较大小的两个整数中较大者的值
     */
    public int max(int a, int b){
        return a > b ? a : b;
    }
}

调用实例方法

方法通过方法名被调用,且只有被调用才会执行。
1、方法调用语法格式

对象.方法名([实参列表])

使用的注意点
(1)必须先声明后使用,且方法必须定义在类的内部
(2)调用一次就执行一次,不调用不执行。
(3)方法中可以调用类中的方法或属性,不可以在方法内部定义方法。
正确示例:

{
 方法 1(){
 
 }
 方法 2(){

 }
}

关键字 return 的使用

return 在方法中的作用:
– 作用 1:结束一个方法
– 作用 2:结束一个方法的同时,可以返回数据给方法的调用者
注意点:在 return 关键字的直接后面不能声明执行语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值