Java的对象和类
- 类:具有相同属性和方法的一组对象的集合,类是对象的抽象,对象是类的具体,类是一个模板,它描述一类对象的行为和状态。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类的结构:
一个类由属性和方法构成。
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。创建类
public class School {
//属性
String name;
String addres;
double area;
//方法
public void teach(){
System.out.println(addres+"的"+name+"可以"+"教书");
}
public void play(){
System.out.println(addres+"的"+name+"可以"+"玩");
}
}
创建对象
//创建学校
School school=new School();
//给属性赋值
school.name="大学";
school.addres="沙坪坝";
school.area =10000;
//调用方法
school.teach();
school.play();
无参方法有参方法
//无参方法
public void jia(){
}
//有参方法
public void jian(int a,int b){//实参
}
//测试类
Class cl=new Class() ;
cl.jian(2,3);//形参
有返回值的方法:
在定义方法是需要加入返回值如:int,double,,,在调用的方法中需要有一个变量来接收这个返回值。
返回值的类型根据程序的需求来确定。public int get(int a,int b){
return a+b;
}
//调用方法
B B=new B();
int B=B.get(a,b);
Java方法中通过传递参数改变变量的值:
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用
1、对于基本类型参数,在方法体内对参数进行重新赋值,并不会改变原有变量的值。
2、对于引用类型参数,在方法体内对参数进行重新赋予引用,并不会改变原有变量所持有的引用。
3、方法体内对参数进行运算,不影响原有变量的值。
4、方法体内对参数所指向对象的属性进行操作,将改变原有变量所指向对象的属性值。
构造方法:
构造方法特点:
1.没有返回值,方法名和类名相同
2.构造方法是用来创建对象的,参数必须一一对应
3.无参构造系统自带,有参需要手动写出来
4.当写了有参构造的时候,无参构造就不提供了,如果有需要就要 自己写出来
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。 ```java public class Puppy{ public Puppy(){//无参构造方法 }public Puppy(String name){//有参构造方法 } }
<a name="EubCD"></a>
### 方法的重载:
- 同一个类中
- 方法名相同
- 参数个数或类型不同
- 与返回值,访问修饰符无关(只看方法名参数,不看返回值和修饰符)
```java
public int StudenClass() {
int a;
return a;
}
//方法重载
public int StudenClass(String name, int age) {
this.name = name;
this.age = age;
return this.age;
}
成员变量和局部变量的区别:
变量声明的位置决定变量的作用域
变量的作用域决定变量可以在程序中使用范围
this关键字:
当成员变量与局部变量重名时,需要用this关键字来声明成员变量
封装:
将类的某些信息隐藏在内部,不允许外界程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的优点
1. 良好的封装能够减少耦合。
类内部的结构可以自由修改。
可以对成员变量进行更精确的控制。
隐藏信息,实现细节。
封装的分类:
属性封装:
1.属性改私有private
2.创建公有的get/set方法
3.对属性合法性增加判断
方法的封装:
涉及到代码设计访问权限修饰符
static修饰符
注意点:
只能定义在方法外面
- static方法只能使用static变量
- 静态变量: ```java
public class Class2 { public static int money;} Class2.money=10000;
static变量是所有对象共享的变量<br />static变量使用时应用类名直接调用,因为static变量不属于任何对象,属于类本身。<br />static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。<br />
- **静态方法:**
用类名直接调用<br />static方法中不能使用this和super<br />static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
- **静态代码块:**
在程序执行之前,就会优先执行<br />**变量的分类:**<br />成员变量:普通对象拥有<br />类变量(用static修饰的变量):类拥有<br />局部变量:局部拥有<br />方法的分类:<br />成员方法:普通方法<br />类方法(用static修饰的方法):类拥有
<a name="cgJt9"></a>
## 特殊:
this关键字:<br />动态对象,当前对象的意思<br />快捷键:<br />alt+enter:建议<br />alt+insert:自动生成代码<br />强行停止程序
```java
System.exit(0);//强行结束程序