面向对象基础

面向对象基础

类与对象

  • 在java中,必须先设计类,才能获得对象
1
2
3
4
public class Phone{
成员变量
成员属性//行为
}
  • 成员变量 成员方法
1
2
3
4
color ="蓝色";//成员变量
public void move(){//成员方法
System.out.println("流动方式");
}

调用成员变量需要实例化对象

1
2
3
phone p =new phone()
p.color;
p.move();

注:一个文件中可以创建多个类,但只有一个类能有public所修饰


封装

对象代表什么,就得封装对应的数据,并提供数据对应的行为

  • private关键字

    • 是一个权限修饰符

    • 可以修饰成员(成员变量与成员方法)

注:被private修饰的成员只能在本类中才能访问

1
2
3
4
5
6
public class GirlFriend
{
private String name;
private int age;
...属性
}
1
2
GirlFriend p=new GirlFriend();
p.age;//被private修饰,外部访问不到,而赋值错误的会报错

针对于每一个私有化的变量,都需要提供getset方法

  • set方法
    • 给成员变量赋值
  • get方法
    • 对外提供成员变量的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class  GirlFriend{
private int age;
public void setAge(int a){
if(a>18 && a<40){
age=a;
System.out.println(a);
}else{
System.out.println("非法");
}
}
}//set方法
public void getAge(){
return age;
}//get方法

局部变量与成员变量

  • 当局部变量名与成员变量名相同时,采用就近原则
1
2
3
4
5
6
7
public class  GirlFriend{
private int age;
public void method(){
int age=10;
System.out.println(age);
System.out.println(this.age);
}

猜一猜该输出的结果为分别为什么呢?

下面我们来揭晓答案

1
2
System.out.println(age);//10
System.out.println(this.age);//本类的成员变量0

在类中,方法体外的为成员变量

在类中,方法体内的为局部变量

当成员变量与局部变量名字相同时在调用该方法中的成员变量时,局部变量的优先级高于成员变量,采用就近原则输出结果


this关键字

就近原则

​ 若全局变量与局部变量命名相同时,输出时,以最近的那个变量为依据输出即可。

区别 说明
System.out.println(age); 以局部变量优先
System.out.println(this.age); 在本类中寻找此变量输出
  • advantage:

    ​ 区别成员变量和成员变量


构造方法

1.构造方法

  • 特点:

    • 构造方法无返回值,也不能为void
    • 构造方法的名称要与本类名称完全相同
    • 构造方法的作用是用来给成员变量初始化的
    • 构造方法中不能使用return

2.构造方法格式

  • 无参构造方法
1
2
3
修饰符 class 类名(){
//方法体
}
  • 有参构造方法
1
2
3
修饰符 class 类名(){
//this([参数])
}

例如:

![](C:\Users\35176\Desktop\屏幕截图 2024-03-18 214733.png)

:ear::ear::ear:

注:

1.无类的参数时,java虚拟机会自动帮我们创建一个无参构造方法

2.若类中出现有参的构造方法了,系统不会再帮我们创建无参构造方法了

3.使用过程中,一般我们既要写无参的构造方法也要写有参的构造方法


static关键字

1.条件:区分类与对象的

2.使用:

    • static修饰的成员为类成员,静态成员(被所有的对象共享)
  • 格式

    1
    static 类型 变量名;
  • 调用方法

  • 类名.静态变量;
    
    1
    2
    3
    4
    5
    6
    7



    * * 未被static修饰的成员为对象,非静态成员

    * 格式

    类型 变量名; 修饰符 返回值类型 方法名 { //方法体 }
    1
    2
    3
    4
    5
    6

    * 调用方法:

    * ```
    类名 对象名 = new 类名();//实例化
    对象名.成员名;

注:是否+static关键字取决于该变量是否具有唯一性

  • 具有唯一性 不加该关键字

  • 不具有唯一性 可以加入该关键字