称为属性,一般为名词,代表对象有什么
称为方法,一般为动词,代表对象能做什么
面向过程: 自己是执行者的身份
面向对象:找一个对象帮你处理任务
现实中的对象对象多数来自于模板,程序中的对象也应有模板
面向对象中的类和对象的概念
类:一类事物的抽象 例如:水果类 老师类
对象:一类事物中的具体的实例(个体) 菠萝 老李
面向对象的编程设计:(先抽象–类,后具体—对象)
创建一个类,类中有属性和方法;实例化一个对象,通过对象调属性和方法在一组相同或类似的对象中,抽取共性的特征和行为,保留所关注的部分
例如:通过对狗的抽取可取得以下共性
属性
通过变量表示,又称实例变量
语法 数据类型 属性名;
位置 类的内部 方法的外部;
public class Dog{ String breed; //品种 int age; //年龄 String sex; //性别 String color; //毛色 }方法
通过方法表示,又称实例方法
语法 不再写static
public class Dog{ public void eat(){ } public void sleep(){ } }通过new关键字进行对象的创建实例化
public class TestCat { public static void main(String[] args) { //通过类,来创建对象/实例 并赋予属性 Cat cat1 = new Cat("啾啾","母",2,"白色","布偶猫"); System.out.println("这是一只"+cat1.color+"叫"+cat1.name+"的"+cat1.age+"岁"+cat1.color+cat1.type); //猫的行为 cat1.cry(); cat1.play(); cat1.action(); } }类:定义了对象应有的特征和行为,类是对象的模板
对象:拥有多个特征和行为的实体,对象是类的实例
对象的实例方法包含两部分:方法的声明和方法的实现
在某些情况下 对象的同一种行为可能存在多种实现过程
重载:一个类中定义多个相同的方法
要求:
方法名相同参数列表不同(类型、个数、顺序)与访问修饰符、返回值类型无关调用带有重载的方法时,需要根据传入的实参去找与之匹配的方法
好处:灵活、方便、屏蔽使用差异
构造方法:类中的特殊方法,主要用于创建对象
特点:
名称与类名完全相同没有返回值类型创建对象时,触发构造方法的调用,不可通过句点手动调用注意:如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法
存储对象的变量中保存对象的地址,通过变量中的地址访问对象的属性和方法
构造方法的重载也遵循重载规则
基本数据类型的变量中直接存放数据值本身,所以改的时候改的是数据值本身
引用类型不同的地方在于真正的数据并没有在栈区的变量中保存,而是在堆区里面保存着,所以虽然也拷贝了一份,也是副本,但是二者指向的是同一块堆区。
当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值
当使用引用数据类型作为方法的形参时,若在方法体中修改形参指向的数据内容,则会实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区;
当使用引用数据类型作为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区;