IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java面向对象三大特性 -> 正文阅读

[Java知识库]Java面向对象三大特性

三大特性:封装、继承、多态
在这里插入图片描述

封装

在这里插入图片描述

什么是封装

在这里插入图片描述

设为私有属性
在这里插入图片描述
报错了
在这里插入图片描述

公共访问方法
可以添加两个方法,来访问私有对象
在这里插入图片描述
并且,可以在方法做一些限制,让输入的数据保持合法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

set和get方法的快速生成快捷键

将实例变量变为私有
在这里插入图片描述

Alt + shift + s
在这里插入图片描述
在这里插入图片描述
自动生成
在这里插入图片描述

封装总结

在这里插入图片描述

综合案例实现

在这里插入图片描述
1、创建用户类

创建实例
在这里插入图片描述

创建无参构造方法和带参构造方法
创建

创建set和get方法
在这里插入图片描述

2.创建银行类
== 是比较内存地址是否相同,equals 是比较内存地址上面的值是否相同

package com.zyy.fourth;

import java.util.Scanner;

public class Bank {
	
	//保存用户数组
	private User[] users = new User[5];
	//用户个数
	private int size;
	
	//1.初始化用户
	public void initial() {
		//创建用户1
		User user1 = new User();
		user1.setCardNo("6333000123");
		user1.setIdentity("5000431");
		user1.setUsername("张三");
		user1.setPassword("123456");
		user1.setPhone("3456123");
		user1.setBalance(10000);
		
		//创建用户2
		User user2 = new User("6333000752", "5000900", "李四", "632134", "7824619", 20000);
		
		//放入数组
		users[size++] = user1;
		users[size++] = user2;
		
	}
	
	//构造方法
	public Bank() {
		initial();
		System.out.println("用户初始化完成");
	}
	
	//2.用户登录
	public void login() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入卡号: ");
		String cardNo = input.next();
		System.out.println("请输入密码: ");
		String password = input.next();
		
		//遍历数组
		User u = null;
		for (int i = 0; i < size; i++) {
		//== 是比较内存地址是否相同,equals 是比较内存地址上面的值是否相同
			if (users[i].getCardNo().equals(cardNo)&&users[i].getPassword().equals(password)) {
				u = users[i];
				break;
			}
		}
		if (u != null) {
			showMinu(u);
		}else {
			System.out.println("卡号或密码错误...");
		}
	}
	
	//3.显示菜单
	public void showMinu(User u) {
		Scanner input = new Scanner(System.in);
		do {
			System.out.println("================欢迎进入xxx银行=====" + u.getUsername() + "==========");
			System.out.println("===1.存款  2.取款  3.转账  4.查询余额  5.修改密码  0.退出===");
			System.out.println("请输入要操作的选项: ");
			int choice = input.nextInt();
			switch (choice) {
			case 1:
				this.save(u);
				break;
			case 2:
				this.withDrow(u);
				break;
			case 3:
				this.trans(u);
				break;
			case 4:
				this.printBalance(u);
				break;
			case 5:
				this.modifyPassword(u);
				break;
			case 0:
				return;
			default:
				break;
			}
		} while (true);
	}
	//4.存钱
	public void save(User u) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入要存钱的金额: ");
		double m = input.nextDouble();
		if(m > 0) {
			u.setBalance(u.getBalance() + m);
			System.out.println("存钱成功  余额: " + u.getBalance());
		}
		else {
			System.out.println("存钱失败");
		}
	}
	
	//5.取钱
	public void withDrow(User u) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入要取钱的金额: ");
		double m = input.nextDouble();
		if(m > 0 && m <= u.getBalance()) {
			u.setBalance(u.getBalance() - m);
			System.out.println("取钱成功  余额: " + u.getBalance());
		}
		else {
			System.out.println("取钱失败");
		}
	}
	
	
	//6.转账
	public void trans(User u) {
		User toUser = null;
		Scanner input = new Scanner(System.in);
		System.out.println("请输入对方的卡号: ");
		String cardOn = input.next();
		
		//遍历数组
		for (int i = 0; i < size; i++) {
			if(users[i].getCardNo().equals(cardOn)) {
				toUser = users[i];
				break;
			}
		}
		if(toUser != null) {
			System.out.println("请输入要转账的金额: ");
			double m = input.nextDouble();
			if(m <= u.getBalance()) {
				u.setBalance(u.getBalance() - m);
				toUser.setBalance(toUser.getBalance() + m);
				System.out.println("转账成功");
			}
			else {
				System.out.println("金额有误");
			}
		}
		else {
			System.out.println("没有该用户");
		}
	}
	
	//7.显示余额
	public void printBalance(User u) {
		System.out.println("余额为: " + u.getBalance());	
	}
	
	//8.修改密码
	public void modifyPassword(User u) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入要修改的密码: ");
		String password = input.next();
		if(password.length() == 6) {
			u.setPassword(password);
		}
		else {
			System.out.println("输入密码有误");
		}	
	}
}

继承

在这里插入图片描述

父类的选择与抽取

在这里插入图片描述

在这里插入图片描述

父类抽取案例

以上图为例
狗狗类
在这里插入图片描述

鸟类
在这里插入图片描述

鱼类
在这里插入图片描述

蛇类
在这里插入图片描述

父类–动物类
我们会发现,这几种类都有相同的实例变量和方法,因此,我们可以整合起来,创建一个父类
在这里插入图片描述

此时,将狗、鸟、鱼、蛇类继承父类–动物类
将与父类重复的内容删掉
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

比如狗继承动物,动物继承生物,那么狗就有生物的属性和方法
在这里插入图片描述

不可继承的部分

在这里插入图片描述

访问修饰符

在这里插入图片描述

public-公开
在这里插入图片描述
在这里插入图片描述

protected-保护
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
什么都不加,实例变量属性默认是protected
在这里插入图片描述
在这里插入图片描述
private-私有
在这里插入图片描述
在这里插入图片描述

方法的覆盖

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
快速添加重写
直接输入父类的方法名
在这里插入图片描述
在这里插入图片描述
不遵循重写规则,就会报错
在这里插入图片描述

super的使用方法1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加上super
在这里插入图片描述
在这里插入图片描述

super访问属性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

子类对象的创建过程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先构造父类 A,然后构造子类B
在这里插入图片描述

super的使用方法2

super调用父类的无参构造方法
super();必须是第一句,系统自动加上
在这里插入图片描述
在这里插入图片描述
super调用父类的带参构造方法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

this与super的区别

在这里插入图片描述

多态

多态的概念

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多态的方法覆盖

在这里插入图片描述

在这里插入图片描述
使用的是子类的方法
在这里插入图片描述

多态的应用

在这里插入图片描述
场景1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果我有更多的动物,这样写实在是太累了,因此,我们就可以用Animal父类来代替这些子类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用场景2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

向上转型 与 向下转型

向上转型(装箱)
在这里插入图片描述

向下转型(拆箱)
在这里插入图片描述

在这里插入图片描述

类型转换异常与instanceof关键字

在这里插入图片描述

在这里插入图片描述
没有转型成真正原来的类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多态总结

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:56:35  更:2022-01-03 15:59:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:49:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码