栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java —— 面向对象(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java —— 面向对象(一)

目录

1. 面向对象(Object Oriented programming, OOP)

1.1 案例

1.2 面向对象的优缺点

 2. Java类

1.1 类

1.2 对象的使用与创建

1.3 变量的分类

1.3.1  成员变量

 1.3.2  局部变量

1.3.3  成员方法

1.4 构造方法

1.4.1 无参构造方法

1.4.1 有参构造方法

1.5 方法重载


1. 面向对象(Object Oriented programming, OOP)

面向过程——步骤化

  • 面向过程就是分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可

面向对象——行为化(概念相对抽象,可结合下面的例子理解)

  • 面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成类(类实例化后才是对象),创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为,符合人类的认知习惯。

面向对象和面向过程都是语言设计思想,两者相辅相成。

1.1 案例

案例:以五子棋为例

面向过程:开始游戏,黑子先走,绘制画面,判断输赢,轮到白子,绘制画面,判断输赢,继续黑子,循环往复,直到黑方或者白方胜利,最后输出结果。

面向对象:先设计,对现实中客观事物进行分类

                  1. 黑白双方,这两方的行为是一模一样的。

                  2. 棋盘系统,负责绘制画面。

                  3. 规则系统,负责判定犯规及输赢。

     玩家对象负责接受用户输入,并告知棋盘对象布局的变化,棋盘对象接收棋子变化就要在屏幕上显示,同时利用规则系统对象对棋局进行判定。

1.2 面向对象的优缺点

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

缺点:一般来说性能比面向过程低。

低耦合:简单的理解就是说,模块与模块之间尽可能的独立,两者之间的关系尽可能简单,

尽量使其独立的完成成一些子功能,这避免了牵一发而动全身的问题。

 2. Java类

1.1 类

定义:类是对现实事物的抽象。

结构:

成员方法:事物属性的描述。名词

方法:事物的行为,功能。

构造方法:用于创建对象

代码块

内部类

步骤: 

 第一步:发现类

[ 访问权限修饰符 ] [ 修饰符 ] class 类 {

}

有public 修饰的类,类名与文件名一致。

无public 修饰的类,类名可与文件名不一致。

第二步:定义类的成员变量(共有属性) 成员:类的成员,在类中定义。

     例:以Car作为对象

            String name;

             float price;

            String color;

第三步:定义类的成员方法(功能/行为)

例:  public void run(){

            System.out.println(name + "汽车行驶" );
         }

         public void stop(){

            System.out.println(color + name + "汽车停止" );
         }

总结类和对象:

类是一个模型,对现实事物的抽象.是模板.

对象时从类这个模型创建出的一个具体实例.

实际生活中,先有对象(具体存在),后有类/概念。

public static void main(String[] args) {
      Car bm = new Car();
      bm.name = "宝马";
      bm.color = "白色";
      bm.price = 30000;
      bm.run();
      bm.stop();
}
//宝马汽车行驶
//白色宝马汽车停止

1.2 对象的使用与创建

对象:具体存在的客观事物,可以拿来使用,万事万物皆为对象。

new : 在堆内存中创建对象,以Car类为模板。

Car() : 构造方法(默认有一个构造方法,方法名与类名相同)

Car bm: 声明一个Car类型的变量

=: 将创建的对象赋给了左边的变量

bm:表示一个具体的对象,可以使用。

同一类的每个对象有不同的成员变量存储空间。

同一类的每个对象共享该类的方法。

1.3 变量的分类

1.3.1  成员变量

定义:在类中,方法体之外。

  • 数据类型可以是Java中的支持的任意类型(引用类型和基本类型)
  • 成员变量可以初始化,也可以不初始化。
  • 不初始化时,Java用默认值:

引用类型默认类型 null

int 为 0;    float和double为0.0;   boolean:false;   char:' '(空格)

引用类型:数组;字符串;自定义的类

基本类型:byte,short,int,long,float,double,char,boolean;

  • 创建对象时,会从类中向对象中复制一份成员变量。
  • 在构造方法,成员方法,代码块中可以使用成员变量。

 1.3.2  局部变量

定义在方法,构造方法,代码块中。

  • 使用前必须初始化赋值。
  • 数据类型可以是java中支持的任意类型
  • 形参也属于局部变量
  • 局部变量仅在该方法中调用,方法结束后自动销毁。

1.3.3  成员方法

  定义在类中,没有被static修饰的,通过对象调用。

1.4 构造方法

Car     bm   =     new   Car();

构造方法:每个类中都有一个默认的构造方法。

作用:用来初始化新的创建对象。

特点:构造方法与类名相同,没有返回值,且不需要void修饰。

1.4.1 无参构造方法

public   Car(){ 

     System.out.println( "Car类的无参构造方法" );
}

在无参的构造方法中为新建的对象用默认值初始化赋值。

1.4.1 有参构造方法

public   Car( String n, float p; String c){ 

    name = n;

    price = p;

    color = c;

     System.out.println( "Car类的有参构造方法" );
}

调用:

Car dz = new Car("大众", 20000f,"红色");

  • 每个类中至少有一个构造方法,可以定义多个。
  • 每创建一个对象时,至少调用一个构造方法。
  • 如果类中无构造方法,会默认创建一个无参的构造方法,一旦定义有参的构造方法,则默认的构造方法失效。

1.5 方法重载

定义:在同一个类中具有相同的名字,但参数不同的多个方法。

 参数不同有三方面的不同:

  • 参数数量不同(stu1,stu3)
  • 参数类型不同  (stu4,stu5)
  • 参数顺序不同  (stu2,stu3)
public class Student {
    String name;
    String sex;
    int age;
    String department;
    public Student(){
        System.out.println("无参的构造方法!");
    }
    public Student(int age,String name){
        System.out.println("调用int和String类型的两个参数");
    }
    public Student(String name,int age){
        System.out.println("调用String和int类型的2个参数的构造方法");
    }
    public Student(int age,String name,String sex){
        System.out.println("调用int,String和String类型的三个参数");
    }
    public Student(String department,String name,String sex){
        System.out.println("调用String,String和String类型的三个参数");
    }
    public static void main(String[] args) {
        Student stu1 = new Student();
        Student stu2 = new Student(11,"张三");
        Student stu3 = new Student("王五",15);
        Student stu4 = new Student(10,"李四","男");
        Student stu5 = new Student("数计","王超","男");
    }
}

调用时,程序会根据需要调用不同的方法,成员方法也可以进行重载。

方法重载也可以为程序提供了多样化,提高了程序功能丰富性。

注:方法重载跟方法的返回值类型没有任何关系

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号