JavaSE基础(4)——面向对象编程部分

1. 面向对象与面向过程

  • 面向对象:将问题中所有的对象找出来,再确定对象与对象之间的关系
  • 面向过程:以过程为中心,将问题的解决步骤依次列出来,按过程依次解决问题

2.类与对象的关系

  • 类 (Class)是用于描述一类事物的属性(特征)和行为(方法)。它定义了对象应该些数据成员(字段)和成员函数(方法)。
  • 对象 (Object)是类的一个实例。它是根据类定义创建的具体实体。每个对象都有自己的状态和行为。

类和对象的关系

  • 模板与实例:类是对象的模板,对象是类的引用
  • 数据与行为:类定义了对象的数据结构(即对象的状态)和可以执行的操作(即对象的行为)。
  • 创建过程:当根据类创建一个对象时,实际上是分配了一段内存空间,并初始化了类定义的属性值。
  • 多态性:不同的对象可以对同一消息做出不同的响应。这意味着同一个方法可以在不同的对象上表现出不同的行为。
  • 类是用来描述一类事物共性的抽象概念,而对象则是这一类事物的具体实例。通过类创建对象的过程称为实例化。

3.面向对象思想开发步骤

找对象 ==》定义类 ==》创建对象 ==》通过对象调用相关行为,完成对应需求

4.类的定义

[public] class 类名 {
    //属性
    
    //方法
}

5.创建对象

类名称 对象名  =  new 类名称();

6.属性

类的属性 也称之为全局变量

[修饰符] 数据类型  属性名 [=];
用法:
    1.取值
数据类型 变量名  = 对象.属性名;
    2.赋值
对象.属性名 =;

7.方法的定义及调用

方法代表一种行为 / 功能 ,当被调用时才会被执行

[修饰符]  返回值类型 方法名(参数列表){
 //具体做的事情---方法体;
 [return 返回值]
}

高内聚——类的内部,越紧密越好低耦合——类与类之间没关系才好

  1. 在方法中,使用return关键字来返回方法执行的结果
  2. 定义方法的时候,如果方法有返回值,那么在方法体结束后,一会会有return,return后面的返回值的类型要与你定义方法的返回值类型保持一致
  3. 如果这个方法没有返回值,我们就可以将返回值类型写成void ,return 可以省略了
  4. 在return的下一行不可以有任何代码

8.形参与实参

  • 形式参数 :我们在定义方法的时候使用的参数--本身没有任何实际的意义
  • 实际参数 :当我们在调用这个方法的时候传递参数,这个实际参数会传到我们定义方法的参数位置上实际参数就是给形式参数做赋值的
  • 实际参数----传递值的方式
    1. by value :按值传递(基本数据类型传值方式)
    2. by ref :按引用传递

9.方法重载

在同一个类中方法名相同,参数列表不同的一组方法被称之为方法的重载

10.构造器

  • 构造器也称构造方法、构造函数——为对象的属性值作初始化操作(赋值)
  • 每个类都有构造方法,方法名与类名相同,如果未人为定义构造方法,JVM会自动定义无参的构造方法
  • Alt + Insert IDEA快速生成 构造方法,getter,setter……

11.this关键字

this代表当前对象(谁调用代表谁)

//1.形参名==实参名
this.age =age;
//2.调用方法,几乎不用
this.test02(); 
test02();  //推荐
//3.this.();  调用已经存在的构造方法,简化当前的构造方法。
//  this() 须写在当前构造方法的第一行
public class Demo {
    String name;
    int age;
    public Demo() {
        this.name = name;
    }
    public Demo(String name, int age) {
        this();
        this.age = age;
    }
}

12.匿名块

没有方法名的代码块,在构造方法调用前执行

面向对象小结

Person person1 = new Person(6);
//1.在栈内开辟栈帧,--this产生
//2.调用构造方法,完成属性值的初始化操作
//3.将对象的引用返回person1

13.包管理

import com.oracle.A;//在一个类中使用另外一个包中的类
public class B {
   A a;
}

14.继承

通过现有的类,简化子类的创建(子类就也可以拥有父类的属性方法

继承关系:子类(衍生类、派生类) extends 父类

Java中不支持多继承,但可传递继承,一个父类可以有多个子类,一个子类仅有一个父类

所有类会自动继承Object类

15.方法的重写(Override)

在父子类中(至少两个类),子类覆盖父类的方法,要求返回值类型方法名参数列表必须与父类保持一致

//  重写object类的toString方法
    @Override
    public String toString(){
        return  "Student{"+ "name:"+name+",age:"+age+"}";
    }

父类具有的属性和方法,子类可以通过继承拥有,或者通过重写实现选择性继承(同种事务的不同实现方式),子类也可 extends 父类没有的属性和方法

16.super关键字

super关键字可以访问父类的成员变量方法

super.name;  
super.getname();
super();  //在子类的构造方法中调用父类的构造方法。 此时super关键字出现在构造方法第一位置!!!

子类不可以继承父类的构造方法,但子类的构造方法会先调用父类的构造方法。

this() 和 super()不可以同时出现在同一个构造方法中

17.多态

多态是同一个行为具有多种不同表现形式或形态的能力

多态就是同一个接口,使用不同的实例而执行不同操作

  • 多态的优点:
  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性
  • 多态存在的三个必要条件:

继承重写父类引用指向子类对象Parent p = new Child();

  • 多态的实现方式:
    • 重写:
    • 接口:

生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。

  • 抽象类和抽象方法:

18.Java抽象类

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

19.封装

封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。防止该类的代码和数据被外部类定义的代码随机访问。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

  • 封装的优点:……
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值