Java 面向对象编程OOP(2)

面向对象三大特征:

封装

在这里插入图片描述

package OOP.Demo04;
//类
public class Student {
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    //名字
    private String name;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    //学号
    private long id;
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    //性别
    private char sex;
//学习()
    private void study(){}
//睡觉()
    private void sleep(){}
}
//提供一些可以操作这个属性的方法!
//提供一些public的get、set方法
//get 获得这个数据
//set 给这个数据设置值

package OOP.Demo04;

public class Application {
    public static void main(String[] args) {
        Student s1=new Student();
        s1.setName("czf");
        System.out.println(s1.getName());
    }
}

调用get与set方法改变s1.name
idea中的快捷健 alt+insert可以快速生成get set方法
封装的意义

  1. 提高程序的安全性,保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 提高了系统的可维护性
    在这里插入图片描述
    使用get set方法可以有效的规避一些不合法的输入,大大的提高了系统的安全性已经可维护性。图中则通过改写setAge方法,避免了年龄的不合法输入。

继承

在这里插入图片描述
在这里插入图片描述
图中Student类与Teacher类都是Person类的子类(派生类)。
Tips
在Java中,所有的类,都默认直接或者间接继承object
快捷键CTRL+h 可以显示类的层次结构
在这里插入图片描述
子类无法调用父类的protected变量和方法

Super详解

在这里插入图片描述
通过代码我们可以看出Person类与student类中都含有protected的变量,如果想要通过Student类来调用父类Person类中的protected变量则需要使用super关键字来进行调用。我们可以看到,我们输出了super.name,而super.name正是protected String name =“chenzifu”;
Super注意点:
1.Super调用父类的构造方法,必须在构造方法的第一个。
2.super 必须只能出现在子类的方法或者构造方法中。
3.super和this 不能同时调用构造方法。
vs this:
代表的对象不同 :
this: 本身调用者这个对象
super: 代表父类对象的引用
前提:
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法
this();本类的构造
super();父类的构造

super无法调用父类的私有变量以及私有方法

方法重写

在这里插入图片描述
静态方法只能被继承无法被重写

重写

前提:需要有继承关系,子类重写父类的方法!

  1. 方法名必须相同
  2. 参数列表必须相同(否则就变成重载了)!
  3. 修饰符:范围可以扩大但不能缩小:public>protectde>default>private
  4. 抛出的异常:范围,可以被缩小,但不能扩大; ClassNotFoundException–>Expection(大)
    重写,子类的方法和父类必须要一致;方法体不同
    重写都是方法的重写,与属性无关

为什么需要重写

  1. 父类的功能,子类不一定需要,或者不一定满足!
  2. 快捷键 Alt+Insert 选择override;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值