面向对象
面向对象(OOP,Object-Oriented Programming):
是一种编程思想,将现实世界的事物抽象成对象,包括其属性和行为,将其中
共性的部分封装,借助类、对象、继承等概念进行软件系统构造,强调的是解
决问题的主体,在面对一个问题时,想到的是谁可以帮我解决。
面向对象的好处
1.更符合人类的思维习惯
2.复杂的问题简单化
3.有执行者变成了指挥者
面向过程和面向对象
面向过程:注重的是解决问题所需要的步骤,通过程序将每一个步骤实现,
然后依次调用;
面向对象:注重的是解决问题的主体,即将构成问题的事务分解成一个个
对象,通过对象去描述问题解决过程中的某一事物的行为。
面向对象的特征
封装:隐藏事物的属性和实现的细节,对外提供公开的访问方式。
能够保证内部的高内聚性和与外部的低耦合性。
有效提高代码的可读性和复用性。
继承:如果类A继承类B,那么称类A是类B的子类,类B是类A的父类,
子类具有父类的非私有的属性和方法,不需要重复写代码,
另外子类也可以重新定义某些属性,重写某些方法。
多态:不同类的对象接收相同的消息(共享相同的外部接口),表现出不同的行为。
创建对象的内存分析
1.将创建的对象所属的类的字节码文件加载到方法区(类加载);
2.在栈内存中声明一个该类型的引用,将来用作存储堆内存内对象所属空间的地址值;
3.在堆内存中开辟空间,为成员变量分配内存;
4.给对象中的成员变量进行默认初始化赋值;
6.将堆内存内对象的地址值赋值给栈内存中的引用。
注意:1.类加载只进行依次;
2.创建对象的时候,默认隐含了字节码文件的地址;
3.哪个对象调用方法,方法的栈帧中就默认隐含了该对象的地址;
4.每次使用new关键字,就在堆内存中开辟了新的空间。
类和对象
类:对现实生活中一类具有共同特征的事物的抽象,
实质是一种引用数据类型,只有实例化为对象时,才能被操作。
类的构成:成员属性(成员变量)和成员方法。
成员属性定义方式和变量一样,只不过位置在类中方法外;
成员方法定义时修饰符不同于之前的public static ,现在,没有static
对象:类的具体表现。
对象的创建和使用
语法:类名 对象名 = new 类名();
访问属性:对象名.属性名;
设置属性:对象名.属性名 = 属性值;
调用方法:对象名.方法名();
package com.DaYu
public class Demo01 {
public static void main(String[] args) {
Animal animal = new Animal();
animal.name = "大毛";
animal.age = 2;
animal.sleep();
System.out.println("name:"+name+" "+"age:"+age);
}
}
class Animal {
String name;
int age;
public void sleep() {
System.out.println("睡觉");
}
public void kanJiang() {
System.out.println("看家");
}
}