java06-面向对象1

news2024/9/28 15:23:09

一:面向对象学习内容:

1.java 类及成员:属性、方法、构造器、代码块、内部类

2.面向对象三大特征:封装、继承、多态

3.其他关键字:this、super  static、final、abstact、interface 、package、import

二:类与对象:

类:是对一类事务的描述,是抽象的概念上的定义

对象:是实际存在的该类事务的每个个体,因而也称instance)

注:面向对象程序设计的重点是类的设计,设计类就是设计类的成员

三:面向对象思想落地的实现规则:

1.创建类,设计类的成员

2.创建类的对象

3.通过 对象.属性  和对象.方法,调用对象结构

四:类的组成及实例化:

类由属性(成员变量)和方法(成员函数)组成

例1:创建人的类,并实例化调用

class Person{
    String name;//属性1
    int age;//属性2
    //方法1
    public void eat() {
        System.out.println("人会吃饭!");
    }
    //方法2
    public void practise(String sports) {
        System.out.println("人会做"+sports+"运动!");
    }
    
}

public class PersonDemo {
    public static void main(String[]args) {
//对象实例化
Person p1 =new Person();
p1.name="tom";
p1.age=18;
System.out.println(p1.name);
System.out.println(p1.age);
p1.eat();
p1.practise("basskeball");

}
}

五:属性及局部变量的对比:

相同点:

1.1定义变量的格式: 数据类型 变量名=变量值;

1.2先声明,后使用

1.3 变量都有其对应的作用域

不同点:

1.1 在类的声明位置不一致:

属性直接定义在一对{}内,

局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部变量

1.2 关于权限修饰符不同:

属性:可以在声明属性时,指明其权限,使用权限修饰符修饰。

常用的权限修饰符:private  public  缺省  protected

局部变量:不可以使用权限修饰符

1.3默认初始化值的情况:

 属性:类的属性,根据其类型,都默认初始化值。

整型(byte short int  long)0

浮点型(float double):0.0

字符型(char:0 或'\u0000')

布尔型(boolean:false)

引用数据类型(类、数组、接口:null)

局部变量:没默认初始化值。

意味着: 我们在调用局部变量前,一定要显示赋值

1.4 在内存中加载的位置:

属性:加载到堆空间中(非static)

局部变量:加载到栈空间

六:return 关键字:

1.使用范围:使用在方法体中

2.作用 1).结束方法 

            2)针对于返回值类型的方法,使用return  数据 方法返回所有的数据

   注意点:return 关键字后面不可以声明执行语句

七:方法的重载:

在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同(和修饰符和返回值类型无关)

例:

int add(int x ,int b)

int add(int x,int y,int z)

double add(double a,double b)

八:权限修饰符:

java中的四种权限符:private 、缺省、protected、public

  

         九:封装性:

软件设计 遵循高内聚、低耦合 ,隐藏具体实现细节,对外提供接口

类的封装性体现在 隐藏属性信息,通过方法 调用属性(实现关键字:private)

class Person{
    String name;//属性1
    int age;//属性2
    //方法1
    
    public String getName() {
        return name;
    }
    public void setName(String n) {
        name = n;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int a) {
        age = a;
    }

十:构造器:   

构造器(constuctor)的作用是创建对象

1.如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器

2.定义构造器的格式:权限修饰符 类名(形参列表){}

3.一个类中定义的多个构造器,彼此构成重载


class Person{
    String name;//属性1
    int age;//属性2

    public Person() {
        
    }

    public Person(String n) {
        this.name = n;
    }

    public Person(String n, int a) {
        this.name = n;
        this.age = a;
    }

十一:this关键字:  

this 表示当前对象,可以调用属性、方法 和构造器,this(参数)调用构造函数,必须放在首行


class Person{
    String name;//属性1
    int age;//属性2


    public Person(String name, int age) {
    
        this.name = name;
        this.age = age;
    }
    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;
    }

十二: 综合例题:实现 客户、账号、银行  关系

//账号类
class Account{
    private double balance;

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public Account(double balance) {
        super();
        this.balance = balance;
    }
    
    //存钱
    public double deposit(double acct) {
        if(acct<0) {
            System.out.println("输入信息错误");
        
        }
         balance+=acct;
         System.out.println("存钱成功" +acct);
        return balance;
        
    }
    //取钱
    public double withdraw(double acct){
        if(acct>balance) {
            System.out.println("余额不足");
        
        }
        balance-=acct;
        System.out.println("取钱成功" +balance);
        return balance;
    }

//客户类
class Customer{
    private String lastName;
    private String firstName;
    private Account acct;
    public Customer(String lastName, String firstName) {
        super();
        this.lastName = lastName;
        this.firstName = firstName;
        
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public Account getAcct() {
        return acct;
    }
    public void setAcct(Account acct) {
        this.acct = acct;
    }
    
}
//银行类
class Bank{
    private Customer[] customers;
    private int numberOfCustomer;
    public Bank() {
        customers =new Customer[10];
    }
    public void addCustomer(Customer cust) {
        customers[numberOfCustomer]=cust;
        numberOfCustomer++;
        
    }
    public Customer getCustomer(int index) {
        if(index>numberOfCustomer) {
        return null;
    }
    return customers[index];
    }
    
}

//测试类
public class ObjectTest {
    public static void main(String []args) {
        Bank bank =new Bank();
        Customer cust =new Customer("jhone","smith");
        bank.addCustomer(cust);
        bank.getCustomer(0).setAcct(new Account(2000));
        bank.getCustomer(0).getAcct().deposit(500);
        System.out.println(bank.getCustomer(0).getAcct().getBalance());

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iPhone/iPad上值得推荐的5个免费PDF转Word

PDF 文件是在不同平台上传输数据的最便捷方式&#xff0c;可确保保持高端信息质量。处理将不同文件格式转换为 PDF 的任务通常很麻烦&#xff0c;尤其是在 iOS 设备上。为了解决这个问题&#xff0c;这里讨论了您可以轻松依赖的前 5 个iPhone PDF 转换器工具。 适用于 iPhone 和…

多传感器融合定位六-惯性导航原理及误差分析

多传感器融合定位六-惯性导航原理及误差分析1. 惯性技术简介1.1 惯性技术发展历史1.2 惯性器件1.2.1 机械陀螺(几乎没人用了)1.2.2 激光陀螺1.2.3 光纤陀螺1.2.4 MEMS陀螺(常用)1.2.5 加速度计2. 惯性器件误差分析2.1 信号误差组成2.2 Allan方差分析3. 惯性器件内参标定3.1 惯性…

十六、状态管理——Vuex(1)

本章概要 简单的状态管理安装 Vuex基本用法 Vuex 是一个专门为 Vue.js 应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 Vuex 也被集成到了 Vue 官方调试工具 vue-devtools 中…

跨年夜,想请你看一场烟花秀!

代码分享地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Cu_lKYfAlMBDttSzhVXPuQ 提取码&#xff1a;2ocd 代码效果展示&#xff1a; 源代码分享如下&#xff1a; <!--* Author: Xiao Wang* Date: 2022-12-30 14:26* Description: --> <!DOCTYPE html …

剑指 Offer 20. 表示数值的字符串

题目 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。 数值&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 若干空格 一个 小数 或者 整数 &#xff08;可选&#xff09;一个 ‘e’ 或 ‘E’ &#xff0c;后面跟着一个…

canopen11-sdo-2b写入命令

源码 1、SDO介绍 就对象而言,主机要访问节点词典的数据,因此主机是client客户端,节点是server服务器。上传与下载是对服务器来说的(这点和常识有点不太一样)。因此,上传指的是服务器发送数据给客户端,下载是客户端给服务器数据。 我们这里要用主机访问节点服务器2000位…

Go 语言从入门到实战

《Go 语言从入门到实战》 的学习笔记&#xff0c;欢迎阅读斧正。感觉该专栏整体来说对有些后端编程经验的来说比无后端编程经验的人更友好。 数据类型 运算符 算数运算符 比较运算符 用 比较数组 相同维数切含有相同个数元素的数组才可以比较&#xff0c;每个元素都相同的才…

四旋翼无人机学习第18节--cadence的bom表、网表导出,PCB板创建,层叠设置

文章目录1 bom表导出2 网表导出3 PCB板创建4 PCB板文件重要设置5 层叠设置1 bom表导出 1、选择DSN文件&#xff0c;之后依次点击Tools&#xff0c;Bill of Materials。 2、当然&#xff0c;也可以点击图标进行bom导出。 3、下图标出的地方可以自行修改&#xff0c;最后点击O…

设计师必须知道的 5个设计灵感网站

设计没灵感&#xff0c;一定要上这5个网站&#xff0c;设计师每天必逛&#xff0c;建议收藏&#xff01; 设计素材免费下载&#xff1a; https://www.sucai999.com/?vNTYwNDUx 国内灵感网 1、设计之窗 http://www.333cn.com/ 设计之窗是一个设计师分享作品及备案的网站&…

【Ctfer训练计划】——命令执行的解题技巧(持续更新中)

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

什么是软考?软考有什么作用?

一、软考是什么&#xff1f; 1.软考介绍 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试是由国家人力资源和社会保障部、工业和信息化部领导的国家级考试&#xff0c;其目的是&#xff0c;科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术…

保姆教程系列三、Redis高可用(Cluster集群模式)

系列文章目录 &#xff01;&#xff01;&#xff01;是的没错&#xff0c;胖友们&#xff0c;保姆教程系列又更新了&#xff01;&#xff01;&#xff01; 保姆教程系列一、Redis部署 so easy 保姆教程系列二、Redis高可用&#xff08;主从同步哨兵模式&#xff09; 保姆教程系…

java开发的医院体检预约系统

简介 体检项目预约网站&#xff0c;普通用户注册登录可以网上预约体检项目&#xff0c;经过后台人员审核后可以去体检。用户还可以记录自己的身体指标下载体检报个&#xff0c;查看医嘱等。医院后台可以进行权限管理&#xff0c;实现多角色管理后台的其他业务等&#xff0c;实…

前端—化繁为简

化繁为简 HTML5要的就是简单、避免不必要的复杂性。HTML5的口号是“简单至上&#xff0c;尽可能简化”。因此&#xff0c;HTML5做了以下改进&#xff1a; 以浏览器原生能力替代复杂的JavaScript代码。 新的简化的DOCTYPE。 新的简化的字符集声明。 简单而强大的HTML5API。 我…

【 shell 编程 】第2篇 判断

判断 文章目录判断一、条件测试二、流程控制1.单分支结构2.双分支结构3.多分支结构4.嵌套结构三、匹配模式一、条件测试 格式&#xff1a; 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] 格式3&#xff1a;[[ 条件表达式 ]] 注意&#xff1a;[] 中的条件…

电气器件系列三十五:开关电源选型实例

开关模式电源&#xff08;Switch Mode Power Supply&#xff0c;简称SMPS&#xff09;&#xff0c;又称交换式电源、开关变换器&#xff0c;是一种高频化电能转换装置&#xff0c;是电源供应器的一种。其功能是将一个位准的电压&#xff0c;透过不同形式的架构转换为用户端所需…

c++11 标准模板(STL)(std::deque)(三)

定义于头文件 <deque> std::deque 赋值给容器 std::deque<T,Allocator>::operator deque& operator( const deque& other ); (1) deque& operator( deque&& other ); (2)(C11 起) (C17 前) deque& operator( deque&& other ) no…

Docker的基本使用

文章目录1.初识Docker1.1 为什么会有docker出现&#xff1f;1.2 docker的理念1.3 Docker和虚拟机的区别1.4 Docker的基本组成(docker的三要素)1.4.1 镜像1.4.2 容器1.4.3 仓库1.5 Docker的架构2.Docker的安装3.常用命令3.1 帮助启动类命令3.2 镜像命令3.3 容器命令1.初识Docker…

使用Lua Script实现不同的限流算法

文章目录Redis中执行Lua ScriptRedis中Debug Lua Script固定窗口代码关键部分解释验证滑动窗口令牌桶漏桶参考资料Redis中执行Lua Script redis-cli --eval /tmp/script.lua mykey somekey , arg1 arg2特别注意&#xff1a;key和arg之间是空格逗号空格&#xff0c;否则脚本调用…

API网关在API安全性中的作用

从单一应用程序切换到微服务时&#xff0c;客户端的行为不能与客户端具有该应用程序的一个入口点的行为相同。简单来说就是微服务上的某一部分功能与单独实现该应用程序时存在不同。 目前在使用微服务时&#xff0c;客户端必须处理微服务体系结构带来的所有复杂性&#xff0c;…