java 面向对象 入门基础概念

初学者,如有错误请指正。

课程是中软国际的java培训。(本节还没学完,学完再补充)

一、面向对象

POP面向过程开发:通过数据和调用流程,来完成一切开发任务。

OOP面向对象开发:以面向对象的思想,将数据和功能封装到类中,以人类日常的思维模式来分析问题,解决问题。

对象:属性 + 行为 (数据 + 函数)

是具体的个体,类是抽象出来的泛指的一个范围。

类:是具有共同属性和行为的对象的集合;定义了对象的属性和方法。

通过类可以实例化多个该类的对象,每个对象的属性值不同,可以说类好比设计图纸,而对象好比根据图纸建设出来的多栋楼房。类是Java程序的基本组成单位。

分析过程先有对象后有类,开发过程先有类后有对象。

面向对象:一切皆为对象。对象就是:属性 + 行为(对于开发语言来讲,也就是数据 + 方法)。类是所有一类相似对象的共同属性、行为抽象而来的。在日常生活中,先有对象、后有类;在开发语言中,先有类、后有对象。面向对象思想有三大特征:封装、继承、多态。

eg:银行卡是一个对象,属性是账号密码,行为是存款取款转账

面向对象的开发过程,实际上就是对象和对象之间的通信过程

封装:先说装,集合性,把属性(数据)和方法(函数)封装到类体内的过程。再说封,封闭性,把属性、方法按照对外公开的二级别,保护起来

继承:继承是为了代码复用

客观自然规律中,子类是可以多继承的(有多个父类)。比如,人继承自父母。

在Java中,为了避免多继承带来的混乱,因此只支持单继承。Java中所有类的顶层父类为Object

从类型涵盖范围角度来讲,父类范围大(类型更加抽象),子类范围小(类型更加具体)

多态:(待补充)

二、类和对象

类的结构:

  1. 属性:对象数据的描述

  1. 方法:对象的行为

  1. 构造方法:用于实例化对象

  1. 内部类:在类体重声明的类

  1. 块:分为静态块,实例块

public和private设置变量的区别:

类内,public的东西是别人改,不需要经过自身同意;但是private,通过set,是自己改,需要经过自己同意,自己想怎么改怎么改。

一般使用private的变量会安全一些。

public class Studen {
    private String name;//属性:学生的姓名

    public  void  study(){
        System.out.println("好好学习天天向上!");
    }
}
public class MainClass {
    public static void main(String[] args) {
        //1.Student类
        //左侧引用类型变量student,给其赋值,指向一个Student类型的对象
        Studen studen = new Studen();

        //通过引用,当做对象使用
        studen.study();
        //不能直接调用类的动作,必须得是对象的动作
        //Studen.study();
    }
}

构造方法

构造方法:对类实例化,创建对象;名称与类名完全一致,且不能写出返回值(无返回值,且不能写出void)

构造方法的作用:创建对象初始化

在创建对象时,必须调用类的某种构造方法。

一个类,默认提供了一个无参的构造方法。同时,在一个类提供了明确的构造方法后,默认的构造方法就不存在了。

容易混淆的概念:默认构造方法 ≠ 无参构造方法

    //无参构造方法,名称必须与类名完全一致,不能写出任何返回值
    public Worker(){
        name = "老张";
    }

    //有参构造方法,名称必须与类名完全一致,不能写出任何返回值
    public Worker(int id, String name, String job, float sal){
        //this表示当前对象的引用。this.属性名,为强调引用的是属性(而不是参数)
        this.id = id;
        this.name = name;
        this.job = job;
        this.sal = sal;
    }

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

面向过程侧重于数据和执行流程

面向对象侧重于:类的设计(功能、数据的角色分类),再按逻辑流程调用多个对象完成最终功能。

爬华山,按面向过程分析:

1. 统计人员,哪些人报名爬华山

2. 研究出行方式、门票、物资等所需的费用

3. 统一收费,交给管理者统一使用

4. 确定出行时间、地点

5. 集合、坐车、到华山门口

6. 统一购买门票,进山

7. 登顶后统计人数,统一下山

8. 山门口集合,坐车回西安

爬华山,按面向对象分析:

1. 分配人员责任:

财务总管(负责收费和支出)

车管(负责联系大巴车,负责出行路线等事宜)

领队(负责总体游玩事宜的安排和指挥)

队员(负责听从安排,完成游玩)

2. 由领队统计所有出行人员

由财务总管估算每人费用,领队通知各人将费用交予财务总管处

由车管预定大巴车,在财务总管处领费用,支付交通费

3. 出发当天,领队在集合点统计所有人数。车管安排好所有车辆事宜。财务总管确保资金齐备

4. 在山门口集合后,领队统计人数,财务总管出钱买票。车管安排大巴车在停车场等待

5. 统一进山,爬山

6. 登顶后领队确保人员齐全,准备统一下山

7. 山门口集合,领队再次确保人员齐全。车管安排车辆将所有人员上车

8. 坐车回西安

重载

1. 必须在同一个类中

2. 方法同名不同参(也就是方法名一样,参数不一样)

3. 参数不一样的三种情况:

1. 参数个数不一样

2. 参数类型不一样

3. 参数类型顺序不一样

4. 返回值不足为是否重载的依据

5. 同一个类中的多个重载方法,应当提供类似的功能

    //参数类型不一样的方法重载
    public float sum(float x,float y){
        return x+y;
    }
    public int sum(int x,int y){
        return x+y;
    }
    //参数类型顺序不一样的方法重载
    public float sum(int x,float y){
        return x+y;
    }
    public float sum(float x,int y){
        return x+y;
    }

Java中变量、对象的内存模型:

堆栈模型

栈:函数调用时,所有参数、临时变量(局部变量),全部存放在栈中。

栈是倒序使用的,先分配的变量内存,使用的是底部内存,也称“入栈”。再分配的变量内存,后“入栈”。

栈中的变量内存使用完毕后,会“出栈”。

入栈、出栈的顺序符合:FILO(先进后出)、或LIFO(后进先出)原则。

堆:一切new出来的对象,都在堆里。堆是最大的分区(可以为几GB)。

覆盖

子类覆盖父类

1. 只能是子类方法覆盖父类方法(有父子类关系)

2. 同名、同参(参数类型、顺序完全一致)、同返回值(返回值类型一样)

3. 对于访问修饰符:子类方法的访问范围应当比父类更“开发”

4. 子类也可以覆盖掉父类的属性

5. 对于覆盖掉的父类属性和方法,子类完全继承了。只是对于子类“不可见”,隐藏了!但是仍然占据空间

从类型角度上来讲,父类靠上,更加抽象(涵盖范围更广)

父类的方法,往往也是比较抽象,不够具体

从类型角度上来讲,子类靠下,更加具体(涵盖范围更窄)

因此,子类很有可能需要覆盖父类的方法(用于改进、完善更具体的功能

引用

this关键字

代表当前对象的引用

通过this关键字,能够引用当前对象的属性和方法

通过this关键字,能够在构造方法中(只能是第一行)调用当前类的其他形式构造方法

private Girl self;//这个属性,保存了当前对象的引用,只是一个引用,指向了对象的地址

super关键字

super关键字:在子类构造方法中要调用父类的构造方法

super是当前子类对象中的父类部分的引用(还是子类型,只不过能够引用父类部分)

通过super关键字,能够在子类中,引用父类的属性和方法

通过super关键字,能够在子类构造方法中(只能是第一行),调用父类构造方法

super();//子类构造方法的第一句,永远在调用父类某个形式的构造方法(默认调用父类无参构造方法)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值