Java面向对象基础总结(一)


前言

Java面向对象基础总结


一、类和对象是什么?

  类是用来描述一类具有共同属性和行为事物的统称。所以其实类在客观世界里是不存在的,是抽象的,只是用来描述数据信息的。
对象是类的一个实例,具体存在的,看得见摸得着的,并且具备该类事物的属性和行为

  • 对象的属性:对象的属性具有特定的值
  • 对象的行为:对象可以操作的行为
类和对象的关系
  • 类是对一类具有共同属性和行为的事物的统称,是抽象的

  • 对象是一类事物的具体实例,看得见,摸的着的,真实存在的实体,是具体的

  • 类是对象的抽象,对象是类的实体

局部变量和成员变量的区别

  位置不同,内存中位置不同,生命周期不同,默认值不同
  位置不同: 成员变量在类中,方法外;局部变量在方法中
  内存中位置不同: 成员变量在堆区; 局部变量在栈区
  生命周期不同;

二、Java的三大特性

1.封装

  封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装原则
  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
  • 例如:成员变量使用private修饰,提供对应的getXxx()/setXxx()方法
    好处:
    • 将变化隔离。
    • 便于使用。
    • 提高重用性。
    • 提高安全性。
    封装原则:
    • 将不需要对外提供的内容都隐藏起来。
    • 把属性都隐藏,提供公共方法对其访问 。

2.继承

  继承:在java中指的是“一个类”可以“继承自”“另一个类”。 "被继承的类"叫做: 父类/超类/基类,"继承其他类的类"叫做:子类。继承后,“子类”中就“拥有”了“父类”中所有的成员(成员变量、成员方法)。 “子类就不需要再定义了”。

继承的好处
  1. 提高代码的复用性(减少代码冗余,相同代码重复利用)。
  2. 使类与类之间产生了关系。
子类调用父类的成员特点

  构造方法: 无法继承
  私有成员: 可以继承,但无法直接访问
  非私有成员: 可以继承,优先在子类中查找,如果有,就直接使用,如果没有,就去父类中找,依次类推

3.多态

定义

  - 多态: 是指同一行为,对于不同的对象具有多个不同表现形式。
  - 程序中多态: 是指同一方法,对于不同的对象具有不同的实现.

前提条件

  1. 继承或者实现【二选一】
  2. 父类引用指向子类对象\接口引用指向实现类对象【格式体现】
  3. 方法的重写【意义体现:不重写,无意义】

好处

  提高了代码的扩展性

弊端

  多态的情况下,只能调用父类的共性内容,不能调用子类的特有内容。

多态向上转型和向下转型

  向上转型: 子类类型向父类类型转换的过程,这个过程是自动的
  向下转型: 父类类型向子类类型转换的过程,这个过程是强制的

      子类类型 对象名 = (子类类型)父类类型的变量;
  注意:
  1.向下转型的时候:右边父类类型的变量一定要指向要转型的子类类型的对象
  2.不管是向上转型还是向下转型,一定满足父子类关系或者实现关系

三、部分特殊字符

1、修饰符public、protected、default、private

  不同权限修饰符的访问能力:

修饰符本类中同包中不同包的子类不同包的无关类
public
protected×
空default××
private×××
 访问权限大小:  public >  protected  >  空   >  private
  使用:
                类:  public
                成员变量: private
                成员方法: public
                构造方法: public \ private(单列设计模式)

2、关键字final

  final: 不可改变。可以用于修饰类、方法和变量。

  • 类:被修饰的类,不能被继承。
  • 方法:被修饰的方法,不能被重写。
  • 变量:被修饰的变量,就只能赋值一次,不能被重新赋值。
      查询API发现像 public final class Stringpublic final class Mathpublic final class Scanner 等,很多我们学习过的类,都是被final修饰的,目的就是供我们使用,而不让我们所以改变其内容。

3、关键字static

static关键字概述

  static是一个静态修饰符关键字,表示静态的意思,可以修饰成员变量和成员方法以及代码块。

static修饰成员变量

  当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

定义格式:
static 数据类型 变量名; 
静态成员变量的访问方式:
对象名.静态成员变量名; 不推荐
类名.静态成员变量名;  推荐
static修饰成员方法:
格式: 在返回值类型前面加static关键字
使用: 类名.静态方法名(实参);
注意事项:
	1.静态方法中不能出现this
    2.静态方法中只能直接访问静态成员变量和成员方法
    3.非静态方法中可以直接访问一切成员变量和成员方法
static修饰成员变量:
格式: static 数据类型 变量名;
使用; 类名.静态成员变量名
特点; 被static修饰的变量会被该类的所有对象共享

4、this关键字

this关键字:
1.作用: 用来区分同名的成员变量和局部变量
2.格式: this.成员变量名
3.this含义:代表当前对象
当前对象: 谁调用this所在的方法,谁就是当前对象
结论:哪个对象调用this所在的方法,this就表示哪个对象

5、super关键字

super关键字的三种用法:
 super可以访问父类的成员变量: super.成员变量         一般用来区分父子类中同名的成员变量
 super可以访问父类的成员方法: super.成员方法(实参);   一般用来在子类中访问父类的成员方法
 super可以访问父类的构造方法:
      空参构造: super();
      有参构造: super(实参);
       注意:
             1.子类的构造方法默认会调用父类的空参构造方法
             2.super访问父类的构造方法,可以用来初始化从父类继承过来的属性
             3.在子类的构造方法中,使用super调用父类的构造方法,必须放在子类构造方法的第一行
super的注意事项一
  • super访问成员变量和成员方法: 优先去父类中找,如果有就直接使用,如果没有就去爷爷类中找,如果有,就用,依次类推…
super的注意事项二
  • 子类的构造方法默认会调用父类的空参构造方法,如果父类中的没有空参构造方法,只定义了有参构造方法,会编译报错
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值