面向过程与面向对象的设计思想
面向过程:解决一个问题,分析解决这个问题所需要的具体的步骤,然后实现这些步骤.
面向对象:解决问题时先进行以分类大思想进行分析,然后以分类的形式进行解决问题.
举个例子:把大象装进冰箱里
面向过程:打开冰箱门
把大象装进去
关闭冰箱门
面向对象:对此事件进行分类
人类: 装东西 操作等
大象:被装进冰箱
冰箱 + 门:存储东西
门:进行开门,关门
面向对象无法取代面向过程,是相辅相成存在的,面向对象关注于事物之间的关键,在具体细节的实现中,还是需要面向过程的思维方式.
java类
类的概念
类是一个模板,是描述事物属性,行为的集合,类是表示某类事物的一些共同的特征属性,把这些信息创建一个文件(.java类)记录起来.比如:
人 类 (抽象的类)
年龄 姓名 地址 性别 … 定义属性 行为
张三 具体的人 对象
类的结构
成员变量:事物属性的描述
方法:事物所作的行为
构建方法:用于创建对象
内部类:在类体中声明的类
块:一段没有名称的代码块
类的设计
发现类 比如:Dog
定义类的属性 比如:name color price
定义类的行为 比如:狗的叫声 停止
package feifan.day1;
/* 类的声明 类名:首字母大写 驼峰表示
[访问权限修饰符] [修饰符] class Dog{
}
*/
public class Dog {
/* 成员变量
定义在类中 方法体之外的变量
可以是任何一种数据类型 (基本类型和引用类型)
例如狗(姓名 颜色 价格...)
局部变量在方法 构造方法 语句块中定义的变量为局部变量
可以是java语言中任何一种数据类型(基本类型 引用类型)
*/
String name;
String color;
float price;
/* 类方法
[访问权限修饰符 ] [修饰符]/void 方法名({
语句块
)
*/
public void jiao(){
System.out.println("汪汪汪");
}
public void stop(){
System.out.println("停止");
}
java对象
对象:对象是类的实例,以类的模板在内存中创建实际存在的实例.
对象的创建:
例如: Dog mt = new Dog()
左边:Dog mt :使用Car类声明一个变量mt
右边:new Dog() 使用new+ 类名构造方法 在内存中创建一个具体的对象
使用变量mt访问对象中的成员变量和成员方法
package feifan.day1.day2;
public class TestDog {
public static void main(String[] args) {
/* 创建对象
Dog mt = new Dog();
new Dog() 使用new+类名构造方法
Dog mt 用Dog类作为一个类型声明一个变量 mt
= 右边创建的对象地址赋给变量mt或者说变量mt指向内存中的对象
*/
Dog mt = new Dog();
mt.name="小小";
mt.color="白色";
mt.price=850;
mt.jiao();
mt.stop();
System.out.println(mt.name+"|"+mt.color+"|"+mt.price);
Dog hb = new Dog();//
hb.name="大大";
hb.color="灰色";
hb.price=700;
hb.jiao();
hb.stop();
System.out.println(hb.name+"|"+hb.color+"|"+hb.price);
}
}
变量分类
变量按照数据类型分为:
基本类型 :8种 整数型(byte short int long) 浮点数 (float double ) 字符型char 布尔型boolean
引用类型:类 数组
变量按照位置进行分类:
成员变量:成员变量是定义在类中,方法体之外的变量。
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量的作用范围为整个类体。
局部变量: 在方法、构造方法或者语句块中定义的变量被称为局部变量。
局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
局部变量在使用前必须初始化赋值。
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
方法分类
成员方法
成员方法定义在类中,在创建对象的时候创建此方法.
/* 类方法
[访问权限修饰符 ] [修饰符]/void 方法名({
语句块
)
*/
public void jiao(){
System.out.println("汪汪汪");
}
public void stop(){
System.out.println("停止");
}
//创建对象
Dog mt = new Dog();
//成员方法通过对象调用
mt.jiao();
mt.stop();
构造方法
构造方法是用来创建对象的方法.
构造方法的特点:
构造方法名与类名相同,没有返回值,不需要void修饰.
构造方法是定义在java类中的一个用来创建对象的方法.
每个类中默认会有一个无参的构造方法,也可以定义有参数的构造方法, 一旦定义了有参的构造方法,默认无参的就会失效,如果还需要使用默认无参的,必须显示的声明.
一个类中可以有多个构造方法,通过方法的参数区分.
/*
构造方法名 与类名相同 没有返回值 不需要用void修饰
java会提供默认的无参的构造方法
在类中定义了构造方法之后 默认无参构造方法会失效
一个类可以有多个构造方法
*/
//默认的无参构造方法
public Dog(){
System.out.println("这是");
}
/*
可以在类中定义有参数的构造方法,如果定义了有参数的构造方法, 默认无参的就会失效
有参的构造方法,在创建对象的同时,还以为对象中的属性赋值
*/
public Dog(String n){
name=n;
}
public Dog(String n,String m){
name=n;
color=m;
System.out.println("两个参数");
}
public Dog(String n,float k){
System.out.println("两个参数(String n,float k)");
}
public Dog(float k,String n){
System.out.println("两个参数(float k,String n)");
}
}
方法的重载
方法的重载是,在同一个类中具有相同类名但是参数不同的多个方法。
参数不同是从三个方面区分:参数个数不同,参数数据类型不同,顺序不同
调用时根据参数的不同选择对应的方法
构造方法,成员方法都可以重载