面向对象
对象
-
什么是对象
具有明确的行为(方法)和特征(属性|变量)的实体 -
对象有什么
行为 : 指的是方法,一般都是动词。代表对象能干什么
特征: 指的是属性,一般都是名词。代表对象有什么
类
- 类的由来:类是由多个具有相同特征和行为的对象抽取出来的
如果定义一个类:
1、确定类名
2、编写成员变量
3、编写成员方法
public class Dog {
//属性
String name;
int age;
String sex;
//方法
public void play(){
System.out.println("小狗玩飞盘");
}
}
创建对象
语法:类名 对象名 = new 类名();
Dog dog = new Dog();
- 成员方法和成员属性的调用
//创建Dog对象
// Dog dog=new Dog();
// //调用成员属性
// dog.name="joy";
// dog.age=2;
// //调用成员方法
// dog.play();
类和对象的关系
- 类:定义了对象应具有的特征和行为,类是对象的模板
- 对象:拥有多个相同特征和行为的实体,对象是类的实例
局部变量和成员变量对比
- 位置
局部变量在方法内初始化,成员变量在类中,方法外初始化; - 默认值
局部变量没有默认值,成员变量和数组中的默认值一致; - 作用域
局部变量在所在的{},成员变量在整个类中 - 重名
局部变量在不同的作用域中可以重名,成员变量在类中不可以重名; - 生命周期
局部变量方法执行完即被销毁,成员变量随着对象销毁而销毁;
如果局部变量和成员变量重名时,遵循就近原则
实例方法
- 实例方法
实例方法当对象被创建的时候产生(不使用static修饰) - 方法重载:在一个类中的出现同名方法称之为方法的重载
1、同名不同参(参数类型,参数个数,参数顺序)
2、和返回值、修饰符没有关系
public class Dog {
public void eat(){
System.out.println("狗吃");
}
public void eat(String name){
System.out.println(name+"狗吃");
}
public void eat(int age,String name){
System.out.println(age+name+"狗吃");
}
public void eat(String name,int age){
System.out.println(age+name+"狗吃");
}
}
构造方法
-
构造方法:类中的特殊方法,用于创建类的对象
-
作用:创建类的对象(实例化)
-
语法:public 构造方法名(){}
-
构造方法名必须与类名完全一致
-
特点:
1、如果一个类没有编写构造方法, 那么jvm会默认提供一个无参构造方法,但是如果一个类提供了构造方法,那么jvm就不会再提供给这个无参构造方法
2、构造方法可以重载
3、一个类无论提供多少个构造方法,一定要保留一个无参构造方法
-
对象创建的过程
1、内存中开辟空间
2、成员初始化
3、执行构造方法代码
4、将对象地址指向对象 -
内存分配图
this关键字
- 含义:表示当前类的对象,在对象被创建的时候自动产生
- 作用: 可以调用本类的属性、方法、构造方法
- 调用本类的属性
this.属性; - 调用本类的方法
this.方法名(); - 调用构造方法
无参构造
this();
有参构造
this(参数);