面向对象1

目录

一,面向过程和面向对象

1.面向过程和面向对象

2.面向过程的程序设计理念

3.面向对象的程序设计理念

4.对二者的评判

二,类和对象

1.类和对象的定义

(1)类

(2)对象

2.类和对象的创建

(1)类

(2)对象

三,方法的重载

四,对象与引用

五,值传递

1.基本数据类型变量之间传递

2.引用数据类型变量——称为引用传递(传地址)


一,面向过程和面向对象

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; (价格)

方法声明格式为:

[ 访问权限修饰符 ] [ 修饰符 ]/ void start(){
System.out.println(" 汽车启动 ");
[return 返回值 ;]

}

(2)对象

对象:以类为模板,在内存中创建出来的实例

1.new+构造方法,在内存中开辟了一块空间      位置:等号右端

2.类名+变量名,声明一个(类名)型变量         位置:等号左端

注:int ,float ,String 等都是Java语言中定义好的类型

3.  =      将创建出来的对象地址赋给左边变量

             左边变量就表示右边new出来的对象。

eg:car bc = new car;

注:没new出来的一个对象都是独立的,都拥有类中定义的功能

三,方法的重载

在一个类中,有多个重名的方法称为方法的重载

区分方法:可以通过参数的个数,顺序与类型对方法进行区分

普通方法也可重载,

方法的重载与方法的返回值无关

注:一个类中可以定义多个构造方法,但参数的形式需不同

注:类中默认无参构造方法会失效

一旦在类中定义了有参的构造方法,默认无参的构造方法会失效,被覆盖

所以一般有类中定义了有参的构造方法,都会显示把默认无参的构造方法定义出来

四,对象与引用

Java语言中除了基本类型之外的变量类型都称为引用类型

Java中的对象是通过引用来对其操作的

1 )右边的“ new Car()” ,是以 Car 类为模板 , 在堆空间里创建一个 Car 类对象。
2 )左边的“ Car bm” 创建了一个 Car 类型引用变量。所谓 Car 类的引用,就是以后可以用来指
Car 对象的对象引用。
3 ”=” 操作符使对象引用指向刚创建的那个 Car 对象。
我们可以把这条语句拆成两部分:
Car bm;
bm= new Car();
这样写,就比较清楚了,有两个实体:一个是对象引用变量,一个是对象本身。

new Car(); 这个语句在堆空间里创建了实体,尽管它们也是确确实实存在的实体,但是,
我们看不见,也摸不着。
对象没有名字,也就没法直接访问它。我们需要通过对象引用来间接访问对象。
对象好比是一只很大的气球,但是我们抓不住它。引用变量是一根绳,可以用来系汽球。
Car car1; 1 )创建一根绳子,一根还没有系上任何一个汽球的绳;
Car car2; 2 )又做了一根绳,还没系上汽球,
car1 = new Car(); 3 )给 car1 系上气球;
car2 = car1 ;( 4 )这里,发生了复制行为。要说明的是,对象本身并没有被复制,被复
制的只是对象引用。
结果是, car2 也指向了 car1 所指向的对象。两根绳系的是同一只汽球

五,值传递

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值