1,面向过程思想和面向对象思想
举个简单例子,今天下午我饿了,想出去买点东西吃,发现下雨了,我于是乎又撤回来了。我要自己出去买东西,首先需要走到商店,挑选商品、付钱,走回来、吃这几个流程,这就是面向过程思想。由于下雨我也就没去,我用微信在学校的零食外卖公众号速猴上定了零食,然后就给送了过来,这个过程可以看做面向对象思想,速猴可以看做一个对象,能为我提供商品,我使用速猴就可以完成我要吃零食的需求。
面向过程:强调的是过程,所有事情都需要自己完成。
面向对象:是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做)可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)将我们从执行者变成了指挥者角色发生了转换。
2,栈、堆、方法区
JAVA的JVM的内存可分为3个区:堆(heap)、堆栈(stack)和方法区(method)
1,堆区:
提供所有类实例和数组对象存储区域
jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
2,栈区:
每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3,方法区:
又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
运行时常量池都分配在 Java 虚拟机的方法区之中
/*
*手机类:
* 成员变量:品牌,价格,颜色...
* 成员方法:打电话,发短信...
*/
public class Phone {
//品牌
String brand;
//价格
int price;
//颜色
String color;
//打电话
public void call(String name) {
System.out.println("给"+name+"打电话");
}
//发短信
public void sendMessage() {
System.out.println("群发短信");
}
}
/*
*手机类的测试类
*/
public class PhoneDemo {
public static void main(String[] args) {
//创建对象
Phone p = new Phone();
//输出成员变量值
System.out.println("品牌:"+p.brand);//null
System.out.println("价格:"+p.price);//0
System.out.println("颜色:"+p.color);//null
System.out.println("------------");
//给成员变量赋值
p.brand = "锤子";
p.price = 2999;
p.color = "棕色";
//再次输出成员变量值
System.out.println("品牌:"+p.brand);//锤子
System.out.println("价格:"+p.price);//2999
System.out.println("颜色:"+p.color);//棕色
System.out.println("------------");
//调用成员方法
p.call("林青霞");
p.sendMessage();
}
}
3,面向对象三大特征
封装、继承、多态
1,封装:通过关键字private实现
A:封装概述
是面向对象三大特征之一
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
B:封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
成员变量private,提供对应的getXxx()/setXxx()方法
C:好处:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性。,
2,继承:通过关键字extends实现
父亲的财产是父亲辛苦奋斗而来的,儿子不费吹灰之力,生下来就有了,就因为他们之间是父子关系。在现实生活中,继承一般是指的子女继承父辈的财产,在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系, 在 Java 中,类的继承是指在一个现有类的基础上去构建一个新的类.构建出来的新类被称作子类,现有类被称作父类,子类 `无条件` 拥有父类全部可继承的属性和方法.继承通过 "extends 关键字"实现,在 Java 中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。
A类是 B 类的子类, 也称为派生类。 Derived class
B类是 A 类的父类, 也称为基类、超类。Super class
3,多态:父类引用指向子类对象,父类引用调用方法,执行的是子类重写的方法。
多态概述:
在设计一个方法时,通常希望该方法具备一定的通用性,在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。, 在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。
多态性:多态基础是继承。 类之间先有继承关系之后,才会产生多态的形式。
多态三要素:继承、重写、向上转型。
程序中的多态:同一个行为,对于传入不同的 `对象` 而言,具有完全不同的表现形式。