解惑大师

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一 面向对象的元素

1.类与对象

1.1 类: 一个具有相同特性的事物抽象描述

对象: 类的一个个实体,实例的,具体存在

类 是对象设计模板

1.2 类的声明

[ 修饰符 ] class 类名{
      成员列表: 属性、 方法、构造器、内部类、代码块;
}

1.3 对象的实例

类名 对象名 =  new 类名();

2.1 类的成员 —— 属性

2.1.1. 声明属性

[ 修饰符 ] class 类名{
      [修饰符] 数据类型 属性名;
      [修饰符] 数据类型 属性名 = 值; // 属性初始化值
}

例子

public static void main(String[] args){
      Student s1 = new Student();
      s1.name = '小灰灰';
      s1.age = 10;
      s1.sex = '男';
}

class Student{
      String name;
      int age;
      String sex;
}

2.2.2 访问属性
(1) 本类访问属性

class Circle{
    double radius;
    
    double getArea(){
        return 3.14 * radius * radius;//直接访问
    }
}

(2) 其他类访问属性

class Circle{
    double radius;
}

class TestCircle{
    public static void main(String[] args){
        Circle c1 = new Circle();
        double area = 3.14 * c1.radius * c1.radius;//对象名.属性名
    }
}

(3) 对象内存分析

public static void main(String[] args){
      Student s1 = new Student();
      s1.name = '小灰灰';
      s1.age = 10;
      s1.sex = '男';
}

class Student{
      String name;
      int age;
      String sex;
}

数据类型: 可以是基本数据类型, 也可以是引用类型

2.2 类的成员 —— 方法

方法: 提高代码重用性

2.2.1 声明

[修饰符] class 类名{
    [修饰符] 数据类型 属性名;
    [修饰符] 返回值类型 方法名( [形参列表] ){
            方法体
      }
}

方法 = 方法签名 + 方法体
说明:

  1. 修饰符
  2. 返回值类型

(1) void: 表示无返回值
(2) 非void : 所有java数据类型

  1. 方法名

3.1. 见名知意
3.2 第二个首字母要大写

4.形参列表
​ 在完成这个方法的功能时,需要一些数据,这些数据要由“调用者”来决定,那我们就可以设计形参。

​ 语法格式:

​ ():无参,空参

​ (数据类型 形参名):一个形参

​ (数据类型1 形参名1, ......, 数据类型n 形参名n):n个形参

5.方法体:实现方法的功能,最好一个方法就完成一个独立的功能。

2.2.2 方法的调用

//本类同级别方法调用:直接调用
【变量 = 】 方法名(【实参列表】);
//在其他类的方法中调用
【变量 = 】 对象名.方法名(【实参列表】);

(1)是否传实参

看被调用的方法是否有形参

(2)是否接收返回值

看被调用的方法是否是void,如果是void,就不需要也不能接收,如果不是void,就可以接收。

代码实例

//本类
class Circle{
    double radius;
    void printInfo(){
        System.out.println("半径:" + radius);
    }
    
    void test(){
        printInfo();//本类中调用无参无返回值方法
    }
}
//其他类
class Circle{
    double radius;
    void printInfo(){
        System.out.println("半径:" + radius);
    }

}
class TestCircle{
    public static void main(String[] args){
        Circle c1 = new Circle();
        c1.printInfo(); //其他类中调用无参无返回值方法
    }
}

2.2.3方法声明与调用的原则

(1)方法必须先声明后调用

如果调用方法时,如果方法名写错或调用一个不存在的方法,编译会报错
(2)方法声明的位置必须在类中方法外

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

(3)方法的调用的位置有要求

类{
    方法1(){
        调用方法
    }
}

(4)方法的调用格式要与方法的声明格式对应

①是否要加“对象.”:看是否在本类中,还是其他类中

②是否要接收返回值:看被调用方法是否是void

③是否要传实参:看被调用方法是有形参列表

2.2.4 方法重载 Overload

概念:在同一个类中,出现了两个或多个的方法,它们的方法名称相同,形参列表不同,这样的形式称为方法的重载。和返回值类型无关。

例子代码:

public int max(int a,int b){
    return a>b?a:b;
}
	
	//求三个整数的最大值
public int max(int a, int b, int c){
    return max(max(a,b),c);
}
	
	//求两个小数的最大值
public double max(double a, double b){
    return a>b?a:b;
}

2.4.5 方法参数传递 —— 值传递

(1)形参是基本数据类型时,实参给形参传递数据值,是copy的形式,形参对值的修改不影响实参。 .
(2)形参是引用数据类型时,实参给形参传递地址值,形参对对象的属性的修改,会影响实参对象的属性值,因为此时形参和实参就是指向同一个对象。

示例代码:

class Test{
    public static void swap(int a, int b){
        int temp = a;
        a = b;
        b = temp;
	}

	public static void main(String[] args){
        int x = 1;
        int y = 2;
        swap(x,y);//调用完之后,x与y的值不变
    }
}

示例代码:

class Test{
    public static void change(MyData my){
        my.num *= 2;
    }
    
    public static void main(String[] args){
        MyData m = new MyData();
        m.num = 1;
        
        change(m);//调用完之后,m对象的num属性值就变为2
    }
}

class MyData{
    int num;
}

2.4.6 对象数组

1、元素是基本数据类型

2、元素是引用数据类型,也称为对象数组,即数组的元素是对象
示例代码:

class MyDate{
	int year;
	int month;
	int day;
}
class Test{
    public static void main(String[] args){
        MyDate[] arr = new MyDate[3];//创建数组对象本身,指定数组的长度
        
        for(int i=0; i<arr.length; i++){
            arr[i] = new MyDate();//每一个元素要创建对象
            arr[i].year = 1990 + i;
            arr[i].month = 1 + i;
            arr[i].day = 1 + i;
        }
    }
}
posted on 2020-10-26 13:58  解惑大师  阅读(58)  评论(0)    收藏  举报