JAVA课程学习

JAVA课程学习——第五节

1、面向对象和面向过程

  • ①概念:
  • 面向过程(C语言):在开发程序时,看中的是中间过程,每一个过程步骤都要自己做
  • 面向对象(java、c#、js…):开发程序时不看重具体过程,看重的是完成过程的对象
  • ②优缺点:
  • 面向过程:性能好 / 维护性、扩展性差
  • 面向对象:维护性、扩展性好 / 性能差;开销大
  • ③面向对象三大特征:封装、继承、多态

2、类和对象

  • 关系:类是抽象的,概念上的定义,而对象是类的实例

  • ①类:

成员变量(属性):定义在类下面方法之外的变量
成员方法(行为):去掉static关键字,就是一个成员方法

  • ②对象:
  • 创建对象类名 对象名=new 类名();
  • 调用类的属性对象名.属性名
  • 调用类的方法对象名.方法名

3、成员变量和局部变量

  • 区别
  • 定义的位置不同:成员变量定义在类内部方法之外,局部变量定义在方法内部
  • 作用域不同:成员变量作用在类内部,局部变量作用在方法之内
  • 默认值不同:成员变量有默认值,局部变量没有默认值
  • 内存中的位置不同:成员变量保存在堆里面,局部变量保存在栈里面
  • 访问修饰符不同:
    (1)成员变量有四种访问修饰符(private、protected、public、缺省)
    (2)局部变量没有访问修饰符,默认与方法的修饰符相同
  • 成员变量和局部变量重名:
  • 遵循“就近原则”使用局部变量的值
  • 区分成员变量和局部变量:使用this关键字
  • this:this代表当前使用或者正在使用的对象,谁通过哪个对象调用了方法谁就是this
  • this可以修饰成员变量,方法,构造方法
    ①直接在成员变量名或方法名前jiashangthis
    ②在构造方法中通过”this(形参)“(注意:必须写在首行)的方式调用本类其他构造方法

4、面向对象—封装
java中通过将数据声明为私有的(private),再提供公有的(public)方法(getxx()和setxx())实现对该属性的操作,以达到目的

  • 构造方法

创建对象的时候,会用到一个特殊的方法:构造方法(构造器)
构造方法:public 构造方法名(形参){ }
注意:
①构造方法没有返回值
②构造方法必须与当前类名完全一致,包括大小写
③构造方法可以使用方法重载
④一旦显式定义了一个构造方法,系统不会再提供一个默认的无参构造方法,需要自己手动添加

构造方法作用:
构造方法作用

构造方法赋值和set方法赋值:
①set方法可以针对单个变量进行更改
②构造方法赋值new对象的同时给属性赋值,针对多个对象赋值
区别

5、面向对象—继承

  • 定义:子类继承父类,允许子类拥有父类的属性和行为(父类中私有除外)(共性抽取
  • 关键字(extends)public class 子类 extends 父类()
  • 优缺点:
  • 优点:提高了代码的复用性
  • 缺点:由于继承会有多层的继承关系,会提高类之间的依赖关系,耦合度变高
  • 注意:①一个子类只能有一个父类,一个父类可以有多个子类 ②所有类的基类都是Object

1、继承中的方法重写重点

  • 方法重写:如果父类中的方法无法满足子类要求时,子类可以对父类的方法进行重写

  • 重写规则:

  • ①要求子类重写的方法名、参数列表、返回值类型与父类完全一致
  • ②子类重写方法的访问修饰符权限不能低于父类方法修饰符权限
  • ③子类方法和父类方法必须同为static或非static

2、方法重载(overload)和方法重写(override)的区别(重点):

  • ①方法重载必须在同一个类中,方法重写必须存在继承关系
  • ②方法重载要求方法名相同、参数列表必须不同和返回值无关
  • ③方法重写要求子类方法名、参数列表、返回值类型与父类完全相同

3、super关键字
super关键字:可以修饰属性、方法、构造方法

  • ①当子类和父类的属性出现重名时,默认会调用子类的属性,可以通过“super.属性名”的方式,显式的调用父类声明的同名属性
    super和this关键字
  • ②子类重写父类方法后,如果子类想再次调用父类被重写前的方法可以通过"super.方法名"的方式调用父类方法
  • ③super还可以修饰构造方法,通过子类构造方法中使用“super(形参)”来显式调用父类对应的构造方法

6、面向对象—多态

  • ①多态的前提必须有继承或者接口的实现
  • ②同一个动作与不同的对象产生不同的行为
  • ③多态指的是一个对象的多种形态

多态的体现方式

  • ①使用继承:不同的子类重写父类后,体现出来的形式不一样
  • ②接口的实现也是一种多态

形成多态的必要条件

  • ①继承:存在子类和父类的关系
  • ②接口实现:定义一个类实现对应的接口
  • ③重写:子类重写了父类的方法
  • ④重载:调用相同的方法名,实现的功能不一样
  • ⑤子类对象的多态性(重点):父类的引用指向子类的实例

注意:程序分为两种状态:编译状态和运行状态
例子:Pet p=new Dog(...);
对于多态来说,编译时看语句的左边,左边的变量定义什么类型就是什么类型;
运行时,看语句的右边,右边变量是真正执行的对象,执行的是子类重写后的方法

下转型和上转型

  • 向上转型:将子类对象转换成父类引用(自动转换)
  • 向下转型:将父类对象转换成子类引用(强制类型转换)

转型

final关键字
final关键字:修饰类、方法、成员变量、局部变量

  • 修饰类:修饰的类不能被继承,但是可以继承别的类
  • 修饰方法:修饰的方法是一个最终方法,不能被重写
  • 修饰成员变量:修饰的成员变量值不可改变
    (1)成员变量不再有默认值(2)使用final关键字必须直接对成员变量进行赋值
  • 修饰局部变量:修饰的局部变量值不可改变,一般用来修饰常量

static关键字
static关键字:修饰成员变量、方法、代码块

  • (1)修饰成员变量:
  • ①修饰的成员变量不再属于对象,而属于类本身,可以通过类名.属性名调用
  • ②只要通过static修饰的属性所在类创建的对象,都可以共享这个属性
  • ③当其中一个对象对类变量进行修改以后,其他对象的这个类变量也会修改
  • ④类变量随着类的加载而加载
  • ⑤类变量放在方法区的静态域当中
  • (2)修饰方法
  • 修饰后的方法属于类本身,可以通过类名.方法名()调用
  • 随着类的加载而加载
  • 在静态方法中只能使用静态变量和静态方法
    不能使用thissuper关键字
  • (3)修饰代码块(代码块作用:完成初始化)
  • 在这里插入图片描述
  • List item
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值