面向对象笔记

面向对象概述

  • 类与对象
  • 构造方法
  • 访问权限
  • 继承
  • 多态
  • 抽象和接口
  • 内存分析

面向对象和面向过程

  • 面向过程:侧重的是过程
    • 优点:简单
    • 缺点:代码量大了之后,维护性非常差
  • 面向对象:侧重的是对象,你是上帝视角,你创建了一个大象,告诉大象,进冰箱。
    • 优点:可扩展性非常强,维护成本低。
    • 缺点:新手上手难。

类与对象

  • 造车:
    • 画图纸
      • 1.定义车的属性信息:color,speed,seat
      • 2.定义车的动作:跑
    • 拿着图纸找工厂生产车
  • 面向对象的世界里:
    • 类:就是图纸
      • 属性:这一事物拥有的共同属性
      • 动作:之一类事物共同能执行的功能
    • 对象:使用类创建的具体某一个东西
    • 对象能干什么?完全取决于类是如何定义的
  • 写代码
    • 类要使用class来定义
    • 属性:成员变量来描述,直接写在类中的变量。
    • 动作:成员方法,不写static就是成员方法
    • 创建对象:
      • 类 引用= new 类();

this关键字

  • this:当前类的对象
  • this可以在方法内部获取到对象中的属性信息
  • this还可以区分局部变量和和成员变量

构造方法

  • 在创建对象的时候,自动调用的方法
  • 语法
public 类名(传参):{
    
}
  • 注意

    • 1.没有返回值这一项
    • 2.在我们new的时候,自动调用构造方法
  • 作用:创建对象的时候,给对象设置属性信息。

  • java会默认自动的送给每一个类一个无参数的构造方法,但是,如果你写了构造方法,系统就不会在赠送了

构造方法的重载

  • 构造方法也是方法,也可以进行重载
  • 作用:可以有风多的方式去创建对象
  • 使用this可以访问其他的构造方法

Static静态

  • 静态的内容在内存中保留一份的,并且各个对象之间进行共享

  • 使用p1.country = “民国”,不推荐这样使用静态变量

  • 推荐使用类名访问静态的内容

  • 热点:

    • 1.数据共享
    • 2.属于类的,并不属于对象
    • 3.优先于对象产生的

访问权限

  • 1.public:共有的
  • 2.privat:私有的
  • 3.defau:只有包内才能访问

getter和setter

  • 成员变量一般使用private来声明,保护成员变量不被胡乱的赋值
  • setter:主要是给成员变量赋值,做一定的保护
  • getter:从成员变量中获取数据

继承

  • 继承:子类可以自动拥有父类中除了私有内容外的其他所有内容
  • 当出现x是一种y的时候,x就可以继承y
  • 黑熊怪是一种妖怪
public class 类名 extends父类{
    
}
  • 作用:简化代码的开发
  • 子类对父类进行了扩展

super关键字

  • super:表示父类中的内容
  • this:表示自己类中的内容
  • 用super和this来区分分父类和子类中重名的内容
  • 创建对象的过程:先创建父类的对象,然后创建子类的对象
  • 小总结:
    • 1.super可以获取到父类中的内容
    • 2.可以调用父类中的构造方法,必须写在子类构造方法的第一行,如果父类的构造函数是无参的,可以不写,如果父类没有无参的构造,必须要写super。

方法的重写

  • 重写:子类对父类中提供的方法进行重新定义
  • 语法:子类和父类中的方法的声明完全一致
  • 重写又被成为方法的覆盖

多态

  • 多态:同一个对象拥有多种形态

  • 作用:把不同的数据类型进行统一,让程序具有超强的扩展性

  • 小知识点:

    • 1.把子类的对象赋值给父类的变量–>向上转型
    • 缺点:屏蔽子类中特有的方法
    • 2.把父类的变量转化回子类的变量–>向下转型
    • 向下转型有可能有风险,java要求必须要写强制转换类型
    • (转换之后的数据类型)变量

final

  • 1.被final修饰的变量不可以被改变,又被成为常量
  • 2.被final修饰的方法不可以被重写
  • 3.被final修饰的类不可以被继承

抽象

  • 抽象:现实中不存在的东西
  • 在java中,只声明不实现
  • 抽象方法:使用abstract来修饰,不可以有方法体,直接用分号结束即可
  • 抽象类:如果一个类中有抽象方法,这个类必须是一个抽象类,
  • 特点:
    • 1.抽象类不可以创建对象
    • 2.抽象类的的子类,必须重写父类中的抽象方法,否则,子类也必须是抽象类

通过抽象类可以强制的要求子类中必须有哪些方法

抽象类可以有正常的方法。

接口

  • 接口实际上是一种特殊的抽象类

  • 接口中所有的方法都是抽象方法

  • 接口使用interface来声明

  • 类只能单继承,接口支持多实现

  • 接口同样具有多态性

  • 接口可以把多个不想关的内容进行整合

  • 特点:

    • 1.接口中所有的方法都是抽象方法,都是公开的
    • 2.接口中所有的变量都是全局静态变量

成员变量初始值

  • java中所有的变量必须先声明,后赋值才能被使用
  • java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值
  • 基本数据类型默认值是0,包括布尔值
  • 引用数据类型:null
  • null表示空,什么都没有,占位

object

  • 万事万物皆对象

  • 所有的东西都是对象

  • 在java中所有的类都要继承object

  • object是一个类,所有类的跟

  • 我们写的即使不屑继承关系,那么默认也会继承object

    equals和 ==

  • equals.object类提供的一个方法,用来判断两个对象是否相等

  • equals可以自己重写

  • 字符串的判断一定要用equals来判断

toString方法

  • toString()对一个对象那个的字符串的表示形式

  • 这个方法可以被重写

instanceof关键字

  • 判断xxx独享是否是xxx类型的

参数传递的问题

  • 值传递:把变量的值作为参数进行传递
  • 引用传递:直接把变量作为参数进行传递

java使用的是值传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值