Java的三大特征(封装,继承,多态)

记得在学习Java之初的时候第一个概念就是Java的概念和他的特征,现在在写一篇博客来浅谈一下我自己的理解。

那么在Java中,我们开始都学习了Java的三个特征,那么就是封装,继承,多态

那么为什么他们能作为Java中的三个特点,他们怎么用,对于刚学习Java的同学可能也比较疑惑。那么在这我来说说我对三大特征的一个理解。

首先来谈一下封装,简单的来说封装就是来保护数据的,这个过程就像是,出发一个目的地,路有很多条,但是每一条都不一样,路的宽窄长短不同,假设有条路的宽窄只能自行车电动车才能通过,这时候你非要想开大汽车走过的话是不可能的。在Java里对一个类封装后,我们通过代码来向类里存放数据时,如果你的数据不满足类已经定义好的规则的话,是实现不了的。在封装中,类的变量将从其他类隐藏,并且只能通过当前类的方法访问(getter,setter方法)。 因此,它也被称为数据隐藏。来个小案例爽一下

我们先来创建一个类,并定义属性和方法,注意每个属性定义的前面要加入private(私有的),将属性私有化,不加修饰符封装就毫无意义了

//学生类
public class Student {
    private String name ;   //学生姓名
    private int age ;    //学生年龄
    private String sex ;    //学生性别
    private int stuId ;    //学生学号

        
    //通过getter方法获取类中的属性
    //通过setter方法设置类中的属性
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    //toString方法用来打印出类的属性
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", stuId=" + stuId +
                '}';
    }
}

有个小需求,学号只能是九位数,如果不满足九位数那么这个数据是失效的,这个时候我们可以在学号的setter方法里设置一下数据的判断

    public void setStuId(int stuId) {
        //将参数stuId转化成字符串
       String stuIdNew =  stuId+"";
       //判断字符串的个数是否满足九位,如果满足传入值成功
       if (stuIdNew.length()==9){
           this.stuId=stuId;
       }

    }

继承

就是子类继承父类的特征和行为,子类从父类继承方法和属性,使得子类具有父类相同的行为。

这句话就理解为孩子继承父母所有的财产相似,但是Java里的继承是连带属性和方法都继承了,构造方法除外

语法:

访问修饰符 class 子类名 extends 父类名

例如:

public class Teather extends Student{

}

虽然我们这里没有定义方法和类的代码,但是Teacher类中有从Student类中继承过来的方法和属性,

 如图,我们在实例化类的对象之后,可以看到里面有从父类继承过来的属性和方法、

多态

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

满足多态的条件:

1.在继承关系中

2.方法的重写

3.父类引用指向子类对象       (父类类型 变量名=new 子类类型())

 方法的重写简单来说就是不用父类的方法,自己重新定义方法覆盖父类方法并使用自己的方法

例如,我在父类Student类中加入

    public  void can(){
        System.out.println("我是学生");
    }

在子类Teacher中添加方法

    public  void can(){
        System.out.println("我是老师");
    }

当我实例化对象的时候会显示的是"我是老师",如果没有定义方法的话默认还是会使用父类的方法

父类引用指向子类对象 

还有一种写法是

 Student student = new Teather();

父类句柄可以接收子类对象,在调用 can()方法时,传递的都是 Student类的对象,但是输出什么样的结果取决于该父类句柄所绑定(指向)的到底是什么对象,这就是多态性的外在体现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值