Java三大特性之二,封装和多态

面向对象三大特性之多态和封装

面向对象三大特性:
在这里插入图片描述

1.封装

1.1 封装定义

封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。

1.2 封装的作用

保护类中的信息
隐藏细节信息
提高软件的复用率

1.3 封装的实现

使用访问控制符 private,default(默认忽略不写),protected,public

2 多态

多态的现实意义

  • 现实事物总是会体现出多种形态。比如张三这个学生,学生是人的一种,则一个具体的同学张三既是学生也是,即出现两种形态称为多态。
  • Java作为面向对象的语言,同样可以描述一个事务的多种形态。如Student类继承了Person类,一个Student对象既是Student,又是Person。
  • 多态体现为父类引用变量可以指向子类对象
  • 多态格式:父类类型 变量名=new 子类类型();如Person 张三 = new student();

2.1 多态的概念

面向对象多态是指:

  • 同一种类型
  • 在不同时间运行相同程序(运行时)
  • 产生结果不同
    严重的问题,1.就是子类对象只能调用子类中重写的父类方法,而不能调用子类特有的方法,(并且对于成员变量,向上转型(也就是一般的多态)只能调用父类的成员变量,而不能访问子类的成员变量)例如:
Collection<String> Lists = new ArrayList<>();
//父类 = new 子类(向上转型),集合Lists没有索引

问题解决办法
1.向上转型,只能调用父类的成员变量,和子类重写的父类方法;
2.向下转型,无限制!例如:

Collection<String> Lists = new ArrayList<>();
ArrayList Lists02  = (ArrayList) List;//向下转型(强转)

2.2满足多态的三个必要条件

  • 存在继承关系
  • 父类的引用指向子类对象(即类型相同
  • 子类对父类方法重写

2.4 案列:


public class demo04 {
    public static void main(String[] args) {
        People a=new Student();
        a.eat();
       
        People b=new Teacher();
        b.teach();
    }
}
class People{
    public void eat(){
        System.out.println("上班");
    }
}
class Student extends People{
    public void eat(){
        System.out.println("吃面");
    }
    public void study(){
        System.out.println("学习");
    }
}
class Teachers extends People{
    public void eat(){
        System.out.println("吃米饭");
    }
    public void teach(){
        System.out.println("授课");
    }
}

2.4 接口

在Java编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

2.4 接口特点

  • 接口中存储的数据是常量<summary
  • 接口中的方法是抽象方法
    publi abstract void add (int a ,int b);
  • 接口瀑布能被实例化
    即不能创建接口对象。
  • 接口不能有构造方法
    构造方法的作用是初始化对象,接口中的数据是常量,使用static修饰
  • 接口可以继承多个接口
    接口从形式上完成java的多继承

2.5 接口和抽象类的区别

在这里插入图片描述

2.6 final关键字

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值