【Java】封装、继承与多态

本文详细介绍了Java中的封装、继承和多态。封装通过访问修饰符如public、private、default和protected实现,强调保护性和易用性。继承允许类间共享属性和方法,提高代码复用,多态则是实现方法重写和对象的多种形态。文中通过实例解释了各个概念,并探讨了super修饰符和final关键字的应用。
摘要由CSDN通过智能技术生成

目录

封装

一、public访问修饰符

二、private访问修饰符

1、修饰属性

 2、getter和setter

三、default访问修饰符

继承

一、父类和子类成员关系

1、父类和子类属性之间的调用

2、父类和子类方法之间的调用

二、父类与子类的构造方法

 三、super修饰符

1、修饰属性

2、修饰方法

四、protected访问关键字

五、继承关系

多态

 一、方法重写(override)

1、重写的定义

2、实现多态的条件

3、 向上转型

4、向下转型 

二、final修饰符

1、修饰属性

2、修饰方法

3、修饰类


面向对象的三大特性:封装,继承与多态。

封装

强调的是保护性与易用性。

什么是封装:对外屏蔽类内部一些实现细节,类的外部只能通过类提供的方法操作类。

将数据和操作数据的方法进行结合,隐藏对象的属性和实现细节,对外部提供公开的方法进行交互。

如何实现封装:通过类结构以及访问修饰符来实现封装性。

四大访问修饰符:

private(私有权限,类内部权限)<default(包访问权限,包内部可见)<protected(继承权限)<public(公开的,所有对象可见)

一、public访问修饰符

当访问修饰符使用public在当前项目中任何地方都可以调动public权限的域(类、属性和方法)。

二、private访问修饰符

1、修饰属性

成为私有属性,这些属性只在当前类的内部可见,对外部不可见。

public class BankCard {
    private int cardNum;//卡号
    private String password;//密码
    private double balance;//余额
    public int test;//测试
}

例如在BankCard类中, 定义了三个私有属性和一个公开属性,在另一个类中只能访问公开属性,不能访问私有属性。私有属性对其他类完全隐藏。

 2、getter和setter

当属性被private封装后,类中需要提供getter和setter方法来控制私有属性被外部访问,类的外部通过访问这两种方法来使用私用属性。

 阿里编码规约:类中成员变量没有特殊情况,统一使用private进行封装,合理提供getter和setter方法。

getter是取得私有属性。

public BankCard(int cardNum, String password) {
    this.cardNum = cardNum;
    this.password = password;
}
public int getCardNum(){
    return cardNum;
}
public double getBalance() {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您的账户密码:");
    String pass = sc.nextLine();
    if(pass.equals(this.password)){
        System.out.println("正在查询您账户的余额");
        return this.balance;
    }
    System.out.println("密码错误!");
    return -1;
    
}
public class Test {
    public static void main(String[] args) {
        BankCard bankCard = new BankCard(12345,"123dgn");
        System.out.println(bankCard.getCardNum());
        System.out.println(bankCard.getBalance());
    }
}

创建bankCard对象赋予账号12345密码“123dgn”,然后获得卡号并且输出,然后取得该用户的私有属性余额,至于输入正确的密码才能获得余额输出。 

 setter是修改私有属性。

    public void setPassword() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的旧密码:");
        String oldPass = sc.nextLine();
        if(oldPass.equals(this.password)){
            System.out.println("请输入您的新密码:");
            String newPass = sc.nextLine();
            this.password = newPass;
            System.out.println("密码修改成功");
        }else{
            System.out.println("密码错误!");
        }

    }
    public String getPassword() {
        int num = 123456;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的验证码:");
        int number = sc.nextInt();
        if(number==num){
            return this.password;
        }
        return "验证码错误!";
}
public class Test {
    public static void main(String[] args) {
        BankCard bankCard = new BankCard(12345,"123dgn");
        System.out.println(bankCard.getPassword());
        bankCard.setPassword();
    }
}

同样创建bankCard对象赋予账号12345密码“123dgn”,通过getPas

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世界级白日梦冠军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值