三、面向对象特性(封装、继承、多态、抽象)

一、封装

1、概念

为提高代码安全性,将Java中部分代码“保护”起来,防止外部随意发访问,将这种操作的思想称之为封装。

2、如何封装

成员方法:按照用户的需求,将实现功能的方法代码统一封装到指定类的指定方法中,在外部用户只能调用,无法查看方法源码
成员字段:全部使用private作为访问权限修饰符,即全部私有化

3、简述封装思想的好处

  • 简化代码编写
  • 提高代码的安全性
  • 降低类与类之间的耦合度(解耦合)------>关联性

4、JavaBean

(1)概念

①Bean:是框架语言的一个名词,表示Java类,即class

②JavaBean:按照指定规范,定义编写的Java类

(2)简述JavaBean定义规范
  • 类的访问权限修饰符为public
  • 类种必须明确定义公有的无参构造器
  • 类中所有的成员字段(除常量以外)必须使用private作为访问权限修饰符
  • 类种必须明确定义所有成员字段的公有的get/set方法

二、继承

1、概念

类与类之间存在大量的共性,当在再次定义这种类型的类是,还需要编写大量的重复代码;因此Java中将共性(共同的属性和方法)单独封装到指定的类种,称之为父类,而特性则定义在具体的类种,称之为字类,将父类和字类所具备的关系称之为继承关系。(注:Java中类与类之间的关系只有继承这一种关系)

2、简述继承思想的优缺点和特点

优点:

  • 简化代码的编写(简化子类代码编写)
  • 提高代码的复用性(重写性)

不足:一定程度上提高类与类之间的耦合度

特点:Java中只支持单继承操作,即只有一个直接父类

3、如何实现继承思想

public class 类名 extends 父类{
    
}

4、简述super关键字

表示父类对象,一定在方法体中应用,在字类中当调用父类中的父子类同名方法时,通过super关键字.调用父类,加以区分,当this和super关键字同时应用时,一定先写super

5、方法特征之一------>>>重写(Override)

(1)定义

父子类的共性方法,在父类中定义的操作不能满足子类的需求时,需要在子类中对该方法进行重新定义,称之为重写

(2)前提
  • 类与类之间必须是继承关系
  • 重写的方法一定是父类中已有的方法
  • 子类重写后一定要对 方法进行功能增强
(3)简述Java中如何构成方法重写
方法名一致
&&
参数列表一致
&&
返回值类型一致或为父类方法返回值的子类
&&
访问权限修饰符不严于父类----->>>>>访问权限修饰符:子类>=父类
(4)对比方法重载与方法重写

比较项

方法重写(Override)

方法重载(Overload)

发生的位置

子类

本类

方法名

相同

与类名相同

参数列表

相同

不同(个数||类型||传递顺序)

返回值

一致或是父类方法返回值的子类

无关

访问修饰符

一致或不严于父类

无关

5、类与类继承关系

  • 一定能够继承:当访问权限修饰符为public、protected时
  • 一定不能继承:当访问权限修饰符为private时
  • 选择继承:在同包下,子类可以继承缺省作为访问权限修饰符的类成员

6、父类如何调用子类

  • 父类不能调用子类的特有类成员
  • 父类可以调用父子类同名成员方法

三、多态

1、什么是多态?

同一类的对象指向不同的引用

2、前提条件

类与类之间必须是继承的关系

3、使用多态编程思想的好处

  • 简化业务代码的编写
  • 提高代码复用性
  • 节省栈内存空间

4、多态条件下,对象代表谁?指向谁?

  • 对象代表谁看对象名前的类名
  • 指向谁,看new关键字后调用的构造器

5、引用数据类型转换

(1)概念

当多态状态下,一般创建对象都是父类对象,而当需要调用子类的特有方法时,父类对象无法直接调用,因此需要将父类对象强制转换成子类,完成具体调用。

(2)分类

①自传:向下造型(向下塑形),创建父类对象指向子类构造器

父类 对象名=new 子类([参数列表]);

②强转:向上造型(向上塑形),将父类对象强制转换成子类对象

子类 对象名=(子类)父类对象;

 Vehicle v1=new Vehicle();
Car car =new v1;
(3)简述面向对象思想?特征有哪些?使用面向对象思想便咸亨的好处?
①面向对象编程思想

实质上是将具有相同性质的一类事物归纳总结,按照指定的要求定义成类,通过指定的技术实例化该类的某一具体对象,通过对象调用该类的功能,实现用户需求。

②特征:封装、继承、多态、抽象
③使用面向对象思想编程的好处
  • 简化代码编写
  • 提高代码安全性
  • 降低类与类之间的耦合度
  • 提高代码的复用性
  • 节省栈内存空间
(4)简述interface关键字、implements关键字、instanceof关键字、extends关键字
  • interface关键字:定义接口的关键字
  • implements关键字:实现接口的关键字
  • extends关键字:继承类的关键字
  • instanceof关键字:判断指定对象是否是指定类或子类对象的运算符,结果为布尔类型
public void upKeep(Vehicle v){

        if(v.getKm()>=10000){
            if(v instanceof Car){
                System.out.println("需要更换轮胎!");
            }else if(v instanceof Bus){
                System.out.println("需要更换机油!");
            }
        }else {
            System.out.println("无需进行保养!");
        }
    }

四、抽象(特殊应用)

Java中没有方法体的方法为抽象方法,定义抽象方法的类为抽象类。

1、如何实现抽象

  • 修饰类和成员方法
  • 修饰后的特点:不能实例化对象,既不能通过new关键字调用构造器
  • 修饰方法:没有方法体

2、抽象类和抽象方法的定义格式

(1)抽象方法必须定义在抽象类中
(2)格式
public abstract class 类名{
    成员字段
    构造器
    成员方法
    public abstract 返回值类型 方法名([参数列表]);  //抽象方法
}

3、接口

(1)使用接口的原因
  • 抽象类会增加类与类之间的耦合度(抽象方法全部需要实现)
  • 为了避免Java中单继承的局限性,提出多实现接口
实质:变相增强了类的能力
(2)定义格式
public interface 接口名 {
    成员变量;(基本不用)

    //抽象方法常用 ---abstract关键字可以省略不写
    返回值 方法名([参数列表]);

    //JDK8新特性
    default 返回值 方法名([参数列表]){
        方法体;
    }

    static 返回值 方法名([参数列表]){
        方法体;
    }
}

3、应用场景

(1)当需要定于成员字段、构造器、成员方法、抽象方法时,一定使用抽象类
(2)只需要定义统一的操作规则(即抽象方法),一定使用接口

4、对比普通类、抽象类、接口

比较项

普通类

抽象类

接口

定义的关键字

class

abstract class

interface

继承或实现的关键字

extends

extends

implements

成员字段

变量、常量

变量、常量

常量

构造器

既可以定义,也可以实例化

可以定义,不可以实例化

不可以定义,也不可以实例化

成员方法

普通方法

普通方法,抽象方法

抽象方法

5、拓展

(1)实际开发中:如果实现多个接口,多个接口之间使用逗号分割
(2)如果继承和实现接口同时应用,编写顺序为先继承,后实现
public class 类名 extends 父类 implements 接口1[,接口2,...]{
    类成员定义;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值