java面向对象详解

这篇博客详细介绍了面向对象编程的基础概念,包括面向过程与面向对象的区别、类与对象的定义、类的语法结构、对象的创建与使用,以及封装性的重要性。通过实例展示了如何在Java中创建类和对象,并解释了静态变量和空指针异常。文章强调了封装在面向对象编程中的好处,如信息隐藏和代码复用,同时提供了封装的步骤。
摘要由CSDN通过智能技术生成

目录

一、面向对象概述

1.1、面向过程和面向对象的区别

1.2、面向对象的三大特征

二、类和对象的概念

2.1、类:

2.2、对象

2.3、总结:

三、类的定义

3.1、语法结构

 四、对象的创建和使用

4.1、实例

 4.2、静态变量

五、空指针异常

六、面向对象的封装性

6.1、封装的好处

6.2、封装的步骤

未完...........


一、面向对象概述

1.1、面向过程和面向对象的区别

-面向过程:主要关注的点是,实现的具体过程,因果关系

优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低;

缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,面向过程方式开发的软件元素之间的“耦合度”非常高,软件的扩展能力差,没有独立体的概念,无法达到组件复用;

-面向对象:主要关注对象的(独立体)能完成那些功能

优点:耦合度低,扩展能力强,更容易解决现实中比较复杂的业务逻辑,组件复用性强;

缺点:前期投入成本高,需要进行独立体的抽取,大量的系统分析与设计;

-C语言是纯面向过程的,C++半面向对象,java纯面向对象;

-面向对象更符合人的思维方式;

1.2、面向对象的三大特征

-封装

-继承

-多态

采用面向对象的方式开发一个软件,生命周期当中:

-面向对象的分析:OOA;

-面向对象的设计:OOD;

-面向对象的编程:OOP;

二、类和对象的概念

2.1、类:

1、类代表的是一类事物。

2、在现实社会中,对象A和B之间的具有相同的特征,进行抽象总结出来的模板,这个模板就是类;

3、java语言中所有的class都属于引用数据类型

2.2、对象

-对象是现实世界中实际存在的个体;

2.3、总结:

1、对象又被称为实例(instance)

2、类 转化成 对象 称为 实例化

类-----【实例化】---->对象

3、对象 转化为 类 叫抽象

对象---【抽象】--->类

4、类描述的是对象的共同特征 例如:身高特征

5、一个类主要描述的信息:状态+动作

状态信息:名字、身高、体重...一个类的属性

动作信息:吃,走路,跑步  ... 一个类的方法

三、类的定义

3.1、语法结构

【修饰符列表】 class 类名 {

        属性;

        方法;

}

类体=属性+方法;

例如:学生类

属性有:学号,姓名,性别,年龄

动作信息有:吃饭,睡觉,学习,

代码如下:

/**
 * @Auther 张同学
 * @Date 2022/4/19
 *
 * 学生类,
 * public(权限修饰符)
 * Student(类名)
 */
public class Student {
    //学号属性
    int number=111;
    //姓名属性
    String name="zhangsan";
    //性别属性
    boolean sex=true;
    //年龄属性
    int age=22;

    /**
     * 吃饭的方法
     */
    public void eat(){
        System.out.println("张三在吃饭");
    }

    /**
     * 睡觉的方法
     */
    public void sleep(){
        System.out.println("张三在睡觉");
    }

    /**
     * 学习的方法
     */
    public void stydy(){
        System.out.println("张三在学习");
    }

}

 四、对象的创建和使用

4.1、实例

1、以上学生类中都有属性,属性定义在方法之外,类体之中,这种变量称为成员变量;

2、这些属性信息(变量)没有用static修饰,没有办法通过类直接访问,所以这种变量称为:实例变量

3、对象又被称为实例,实例变量又被称为对象变量,

4、例如以上的student类,如果想要访问到学号,姓名等信息必须要创建变量(实例化对象)

5、一个类可以实例化N个对象

6、实例化对象的语法 new 类名();

7、new是java中的一个运算符

8、例如上面的student类实例化对象:

Student stu=new Student();

stu就是对象

9、通过对象来获取实例变量的信息

public class Student {
    //学号属性
    int number=111;
    //姓名属性
    String name="zhangsan";
    //性别属性
    boolean sex=true;

   public static void main(String[] args) {
        //实例化Student对象
        Student stu=new Student();
        //通过对象访问实例变量
        System.out.println("学号:"+stu.number);
        System.out.println("姓名:"+stu.name);
        System.out.println("性别:"+(stu.sex?"男":"女"));
    }

}

运行结果:

 4.2、静态变量

1、用static修饰的是静态变量,同样用static修饰的方法是静态方法

例如:

public class Student {
    //学号属性
   static int number=111;
    //姓名属性
    static String name="zhangsan";
    //性别属性
    static boolean sex=true;
    //年龄属性
    static int age=22;

    /**
     * 吃饭的方法
     */
    public static void eat(){
        System.out.println("张三在吃饭");
    }

    /**
     * 睡觉的方法
     */
    public static void sleep(){
        System.out.println("张三在睡觉");
    }

    /**
     * 学习的方法
     */
    public static void stydy(){
        System.out.println("张三在学习");
    }

   
}

2、静态方法,静态变量的调用不用创建对象 直接  类名.方法名(变量名)如:

public static void main(String[] args) {
        //调用静态变量
        System.out.println("学号"+Student.number);
        System.out.println("姓名"+Student.name);
        //调用静态方法
        Student.eat();
        Student.stydy();
        Student.sleep();
    }

五、空指针异常

例如:

 public static void main(String[] args) {
       //创建学生对象
        Student stu=new Student();
        //给对象赋值null
        stu=null;
        //在调用该对象
        System.out.println(stu.name);
        //异常:NullPointerException
        //编译可以通过,语法正常
        //运行时出现空指针异常
        //空引用访问实例相关的数据一定会出现空指针异常
    }

六、面向对象的封装性

6.1、封装的好处

1、封装之后,对于那个事务来说,看不到这个事务复杂的那一面,只能看到简单的那一面

2、复杂封装,对外提供简单的操作入口

3、封装之后才会形成真正的对象,真正的独立体

4、封装之后就意味着可以重复使用

5、封装之后对于事务本身提高了安全性

6.2、封装的步骤

1、所有的属性私有化,使用private关键字进行修饰,private表示私有的,修饰的数据只能在本类中访问;

2、对外提供简单的操作入口

-set方法和get方法

-想要修改属性调用set方法

-想要获取属性调用get方法

3、set和get方法命名规范

public  void set(get)+属性名首字母大写(形参){

}

例如:

public class Student {
    //学号属性
   private int number=111;
    //get方法
    public int getNumber() {
        return number;
    }
    //set方法
    public void setNumber(int number) {
        this.number = number;
    }
}

注意:set和get方法没有static关键字;

有static关键字调用方法  :类名.方法名(实参);

没有static关键字调用方法:引用.方法名(实参); 

未完...........

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学%

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值