首页 > 编程语言 >Java基础7

Java基础7

时间:2024-08-11 18:49:43浏览次数:12  
标签:属性 Java String 基础 name legs public 赋值

面向对象的特征一:封装性

随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原则要遵循“高内聚、低耦合”

高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:仅暴露少量的方法给外部使用,尽量方便外部调用。

何为封装性?

所谓封装性,就是把客观事物封装成抽象概念的类,并且类可以把自己的数据和方法只向可信的类或者对象开发,向没必要开放的类或对象隐藏信息。

权限修饰符

4种权限修饰符: private / 缺省 / protected / public

可以使用4种权限修饰符修饰类及类的内部成员。当这些成员被调用时,体现可见性的大小。

实际案例: 在题目中,我们给Animal的对象的legs属性赋值。在实际的常识中,我们知道legs不能赋值为负数的。到那会是如果直接调用属性legs没事不可以加入逻辑判断的,为了解决这个问题:

> 将legs属性私有化(private),禁止在Animal类的外部直接调用此属性

> 提供给legs属性赋值的setLegs()方法,在此方法中加入legs赋值的判断逻辑  if(l >= 0 && l % 2 == 0) 将此方法暴露出去,使得Animal类的外部调用此方法,对legs属性赋值。

> 提供给legs属性获取的getLegs()方法,此方法对外暴露。使得在Animal类的外部还可以调用此属性的值。

public class AnimalTest {
    public static void main(String[] args){
        Animal animal1 = new Animal();
        animal1.name = "小兔";
        // animal1.legs = -4; 这里的赋值其实是不合理的,所以为了将这种不合理的赋值消灭 我们可以写一个赋值的方法,并取消这种.的赋值方法
        animal1.setLegs(4);
        // 那么相应的我们输出就不能写:
        // System.out.println(animal1.legs);   因为我们不能够.的方式调用  所以我们还需要一个获取legs值的方法
        System.out.println(animal1.getLegs());
        animal1.eat();
    }
}

class Animal{
    String name;
    private int legs; // 为了防止用户用.的方式去赋值legs

    public void eat(){
        System.out.println("动物觅食");
    }

    public void setLegs(int l){
        if(l >= 0 && l % 2 == 0){
            legs = l;
        }else{
            System.out.println("你输入的数据非法!");
        }
    }
    public int getLegs(){
        return legs;
    }
}

权限修饰符的范围

 类: 只能使用public / 缺省 修饰

类的内部成员: 可以使用4种权限修饰

封装性的体现

> 场景1: 私有化(private)类的属性,提供公共(public)的get和set方法,对此属性进行获取或修改

> 场景2: 将类中不需要对外暴露的方法,设置为 private

> 场景3: 单例模式中构造器private(私有)的了,避免在类的外部创建实例。

 构造器

作用1:搭配new关键字,创建类的对象。

作用2:在创建对象的同时,可以给对象的相关属性赋值

格式: 权限修饰符 类名(形参列表){ }

注意: 创建类以后,在没有显示提供任何构造器的情况下,系统会默认提供一个空参的构造器,且构造器的权限与类声明的权限相同。

    一旦类中显示声明了构造器,则系统不再提供默认的空参的构造器。

public class Student {
    String name;
    int age;
    String school;
    String major;
    /*
     *与类名一致的方法名
     * 构造方法是在创建对象的时候调用
     * 类在没有定义构造方法的时候有一个默认的无参构造
     * 初始化成员变量
     */
    public Student (String n, int a){
        name = n;
        age = a;
    }
    public Student (String n, int a, String s){
        name = n;
        age = a;
        school = s;
    }
    public Student (String n, int a, String s, String m){
        name = n;
        age = a;
        school = s;
        major = m;
    }
    public String getInfo(){
        return "name = " + name + ",age = " + age + ",school = " + school + ",major = " + major;
    }
}

public class StudentDemo {
    public static void main(String[] args){
        Student s=new Student("小明", 19);
        System.out.println(s.age);
        System.out.println(s.getInfo());
    }
}

属性赋值过程

在类的属性中,有哪些位置给属性赋值:

① 默认初始化;

② 显式初始化;

③ 构造器中初始化;

④ 通过“对象.方法”的方式赋值;

⑤ 通过“对象.属性”的方式赋值;

执行的先后顺序: ① - ② - ③ - ④ / ⑤

以上操作在对象创建过程中可以执行的次数如何:  

> 只能执行一次: ①、②、③

> 可以多次执行: ④、⑤ 

JavaBean

JavaBean是一种Java语言写成的可重用组件。

好比做了一个扳手,这个扳手会在很多地方被拿去用。这个扳手也提供多种功能(可以拿这个扳手扳、锤、撬等),而这个扳手就是一个组件。

所谓JavaBean,是符合如下标准的java类:

① 类是公共的     ② 有一个无参的公共的构造器     ③ 有属性,且有对应的

UML类图

常用的UML工具软件有 PowerDesinger、Rose和 Enterprise Architect。

UML工具软件不仅可以绘制软件开发中所需的各种图表,还可以生成对应的源代码。

在软件开发中,使用UML类图可以更加直观地描述类内部结构(类的属性和操作)以及类之间的关系(如关联、依赖、聚合等)

  • + 表示public类型, - 表示private类型, # 表示protected类型
  • 方法的写法:  方法的类型(+、-) 方法名(参数名:参数类型):返回值类型
  • 斜体表示抽象方法或类

 

标签:属性,Java,String,基础,name,legs,public,赋值
From: https://www.cnblogs.com/gjwqz/p/18352022

相关文章

  • C基础篇 文件操作
    1.EOF宏,C语言EOF宏详解2.gets和fgets函数及其区别,C语言gets和fgets函数详解3.puts和fputs函数及其区别,C语言puts和fputs函数详解4.feof和ferror函数,C语言feof和ferror函数详解5.setbuf与setvbuf函数,C语言setbuf与setvbuf函数详解6.fseek、ftell和rewind函数,C语言fseek、ftel......
  • Java超市收银系统(四、收银功能)
    引言        今天,我们实现收银功能。系统显示“请输入商品条形码(6位数字字符):”,用户输入的条形码在商品表中存在,则显示“输入商品数量:”,否则,提示“您输入的商品条形码不存在,请确认后重新输入”,条形码和数量输入完毕后在销售明细表中增加一条记录(各字段信息如下:流水号......
  • Java超市收银系统(三、密码修改)
    引言        我们还是用之前使用的方法,只不过这次是为了实现密码修改功能,在4个包除了vo包,其余我们都需要修改增加。功能函数包(增删改查)—dao        在我们对数据库进行简单操作时,最主要的数据操作就是增加、删除、修改、查询,我们之前已经写了用户名查询函......
  • Java超市收银系统(一、用户登录)
    引言        今天,我们来学习一下如何用java写一个简单的系统(后续内容包括网络连接、数据库连接、json字符串编码、爬虫、数据增删改查、线程处理等等)会不间断更新,首先是环境配置要求,我们需要在maven库中下载4个包,分别是Jsoup、Gson、JXL、mysql用于字符串解析、数据库......
  • PythonL-Chapter_01_基础语法
    注释#这是单行注释"""这是多行注释可以写多行文字"""变量和数据类型内置基本数据类型整数(int):用于表示没有小数部分的数字,例如-1,0,1,100等浮点数(float):用于表示带有小数部分的数字,例如3.14,2.718字符串(str):用于表示文本信息,必须使用引号(单引......
  • Java计算机毕业设计的场馆预订系统的设计与实现(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全民健身热潮的兴起和体育产业的蓬勃发展,体育场馆作为体育活动的重要载体,其高效管理和便捷服务需求日益凸显。然而,传统的手工预订或简单的在线预......
  • Java计算机毕业设计的蛋糕店线上选购系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,电子商务已成为现代消费模式的重要组成部分,深刻改变了人们的购物习惯。在食品行业,尤其是烘焙领域,线上购物因其便捷性、多样性及......
  • Java计算机毕业设计宠物领养系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和人们生活水平的提高,宠物已成为许多家庭不可或缺的一员,它们不仅为人们的生活带来了欢乐与陪伴,还促进了人与自然的和谐共处。然......
  • JetBrains IntelliJ IDEA 2024.2 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin I
    JetBrainsIntelliJIDEA2024.2(macOS,Linux,Windows)-领先的Java和KotlinIDE请访问原文链接:https://sysin.org/blog/jetbrains-idea/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsIntelliJIDEA-领先的Java和KotlinIDE使开发更高效、更......
  • 高中化学基础(1)
    元素\(\to\)组成单质:游离态同素异形体:\(O_2,O_3\)金刚石,石墨红磷/白磷等化合物:化合态第三周期主族元素自然界无游离态:\(Na,Mg\),\((Al,Si,P)\)亲氧元素,\(Cl\)即除了\(S\),非主族还有\(Ar\)元素含量空气:\(N>O>Ar\)地壳:\(O>Si>Al>Fe>Ca\)海水:\(O>H......