目录
一,面向过程和面向对象
1.面向过程和面向对象
面向对象是软件开发中的一类编程风格,是一种程序设计的思想
除了面向对象还有面向过程,指令式编程,函数式编程等
现主流的编程思想是面向对象和面向过程
2.面向过程的程序设计理念
面向过程(procedure Oriented Programming 简称POP)
面向过程的核心是将实现功能的过程也就是实现步骤,封装成函数,
在每一部执行时调用对应函数
典型语言:C语言
以函数为单位进行代码组织
相对于面向对象而言扩展能力差
3.面向对象的程序设计理念
面向对象(Object Oriented Programming 简称OOP)
不以函数为单位,以类为单位进行代码组织,将同以类事务的属性和行为封装到一个类中
解决某一类问题时,找对应类即可
典型语言:Java、C#、C++、Python等
类与类之间可以存在继承关系,使代码扩展性更好,维护性更好
4.对二者的评判
面向对象是一种宏观设计思想,
需分析完成这件事需要多少类
面向过程是一种微观,具体的设计思想
需要具体落地实现
注:程序设计时,两种思想都需要用到,
离开面向过程,面向对象就无法落地实现
二,类和对象
1.类和对象的定义
类和对象是面向对象的核心定义
先设计类,在有类创建出对象
(1)类
类:具有相同特征事务的抽象定义
eg:
人类:姓名 年龄 性别 名词-->是变量
吃饭 学习 睡觉 动词,行为,功能-->方法
类就是一个模板,用来记录某些事物的属性和行为
编程时先分析事务,将不同类型的类的功能,定义在各自类中
(2)对象
对象:通过类这个模板,创建出一个具体的实例 使用实例
eg:人类是概念 属于类的范畴,不能直接使用
eg:张三,李四,就是具体的人也就是实例,具体操作应该让实例去做
现实生活中现有对象(具体的事物),后有类
编程中先根据具体事物设计出类,在由类创建出具体的对象
2.类和对象的创建
(1)类
类的结构:
变量 属性 名词
方法 行为 动词
类的创建:
第一步:发现类
eg:根据不同类型的车抽象出车类
类的声明格式:[访问权限修饰符] [修饰符] class Car{}
访问权限修饰符有两种public
修饰符有:final,abstract
关键词class用来定义一个类
Java类名的命名规范:类名首字母大写,见名知意,驼峰表示
第二步:发现类的共有属性(成员变量)
eg:
public class car{
//成员变量定义
String color;(颜色)
String name; (名字)
Float price; (价格)
}
声明成员变量的格式:[访问权限修饰符] [修饰符] type attr_name [=defaultValue] ;
第三步:发现类的共有行为(成员方法)
public class car{
//成员变量定义
String color;(颜色)
String name; (名字)
Float price; (价格)
方法声明格式为:
}
(2)对象
对象:以类为模板,在内存中创建出来的实例
1.new+构造方法,在内存中开辟了一块空间 位置:等号右端
2.类名+变量名,声明一个(类名)型变量 位置:等号左端
注:int ,float ,String 等都是Java语言中定义好的类型
3. = 将创建出来的对象地址赋给左边变量
左边变量就表示右边new出来的对象。
eg:car bc = new car;
注:没new出来的一个对象都是独立的,都拥有类中定义的功能
三,方法的重载
在一个类中,有多个重名的方法称为方法的重载
区分方法:可以通过参数的个数,顺序与类型对方法进行区分
普通方法也可重载,
方法的重载与方法的返回值无关
注:一个类中可以定义多个构造方法,但参数的形式需不同
注:类中默认无参构造方法会失效
一旦在类中定义了有参的构造方法,默认无参的构造方法会失效,被覆盖
所以一般有类中定义了有参的构造方法,都会显示把默认无参的构造方法定义出来
四,对象与引用
Java语言中除了基本类型之外的变量类型都称为引用类型
Java中的对象是通过引用来对其操作的
五,值传递
Java中值传递分为两种
1.基本数据类型变量之间传递
假设有a,b两个int变量
将a,的值直接赋给b,就是用a的值填充给b
实际上a,b还是两个独立变量,即一方改变另一方不受影响
public class Test1 {
public static void main(String[] args) {
int a = 10;
int b = a;
b = 22;
System.out.println(a);
System.out.println(b);
test(b);
}
public static void test(int c){
c = 40;
System.out.println(c);
}
2.引用数据类型变量——称为引用传递(传地址)
将一个引用变量赋给另一个引用变量时,
不会创建新的对象只会将对象地址赋给另一个引用变量,
这种情况下两个引用变量指向的是同一个地址的对象,
此时对其中任意一个引用变量进行修改,另一方也会受到影响
package Day4;
public class Person {
String name;
}
package Day4;
public class Test2 {
public static void main(String[] args) {
Person zs = new Person();
zs.name = "张三";
System.out.println("person1的姓名:"+zs.name);
Person ls = zs;
ls.name = "李四";
System.out.println("person1的姓名:"+zs.name);
System.out.println("person2的姓名:"+ls.name);
Test2.test(ls);
System.out.println("person1的姓名:"+zs.name);
System.out.println("person2的姓名:"+ls.name);
}
public static void test(Person ww){
ww.name = "王五";
System.out.println("person3的姓名:"+ww.name);
}
}