首页 > 编程语言 >java封装和关键字

java封装和关键字

时间:2023-05-06 12:55:20浏览次数:49  
标签:p2 p1 封装 System 关键字 println java public out

一、封装

封装:告诉我们如何正确设计对象的属性和方法

对象代表什么,就得封装对应的数据,并提供数据对应的行为

封装的好处:

  1. 让编程变得很简单,有什么事,找对象,调方法

  2. 降低学习成本,可以少学,少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

二、Private关键字:

  1. 是一个权限修饰符

  2. 可以修饰成员变量(成员变量和成员方法)

  3. 被private修饰的成员只能在本类中才能访问

eg:

package com.itheima.Class;

public class Girlfriend01 {
    //属性
    private String name;
    private int high;
    private String gender;
    private int age;

    //针对于每一个私有化的成员变量,都需要提供get和set方法
    // set方法:给成员变量赋值
    // get方法:在提供成员变量的值
    //作用:给成员变量name进行赋值
    public void setName(String n) {//变量有参数但是无返回值,需要接收数据,不需要提供结果
        name = n;
    }

    public String getName() {//作用:对外提供内的属性,不需要接收数据,需要对外输出结果,需要有返回值
        return name;
    }

    // setAge:给成员变量age进行赋值
    public void setAge(int a) {//只接收数据,变量有参数,但是没有返回值
        if (age >= 16 && age <= 50) {
            age = a;
        } else {
            System.out.println("非法数据");
        }
    }

    public int getAge() {
        return age;
    }

    public void setHigh(int h) {
        high = h;
    }

    public int getHigh() {
        return high;
    }

    public void setGender(String g) {
        gender = g;
    }

    public String getGender() {
        return gender;
    }

    //行为
    public void eat() {
        System.out.println("她会吃饭");
    }

    public void play() {
        System.out.println("她会干活");
    }
}
package com.itheima.Class;

public class Girlfriend01Test01 {
    public static void main(String[] args) {
        Girlfriend01 p1 = new Girlfriend01();//创建一个对象
        p1.setName("小诗诗");
        p1.setAge(18);
        p1.setGender("女");
        p1.setHigh(170);
        System.out.println(p1.getName());
        System.out.println(p1.getAge());
        System.out.println(p1.getGender());
        System.out.println(p1.getHigh());
        p1.eat();
        p1.play();
        Girlfriend01 p2 = new Girlfriend01();//创建第二个对象
        p2.setName("筱筱");
        p2.setAge(22);
        p2.setGender("男");
        p2.setHigh(168);
        System.out.println(p2.getName());
        System.out.println(p2.getAge());
        System.out.println(p2.getGender());
        System.out.println(p2.getHigh());
        p2.eat();
        p2.play();
    }
}

运行结果:
小诗诗
18

170
她会吃饭
她会干活
筱筱
22

168
她会吃饭
她会干活

总结:

  1. Private关键字是一个权限修饰符

  2. 可以修饰成员(成员变量和成员方法)

  3. 被private修饰的成员只能在本类中才能访问

  4. 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:

    ​ 1、提供”setXxx(参数)“方法,用于给成员变量赋值,方法用public修饰

    ​ 2、提供”getXxx()“方法,用于获取成员变量的值,方法用public修饰

三、this.关键字

成员变量和局部变量:

  1. 成员变量:把定义的变量定义在方法的外面,类的里面叫做成员变量

  2. 局部变量:把变量定义在方法里面叫做局部变量

this的作用:

可以区别成员变量和局部变量,可以直接访问成员变量

就近原则:

当定义的类和方法里面都有相同的变量,对于输出语句而言,成员变量和局部变量哪个变量对输出语句更近,程序就会打印哪个变量对应的值

public class Gilrfirend{
	private int age;
	public void method(){
	int age = 10;
	system.out.println(age)
	}
}

运行结果:

10

如果我们要打印私有类的age,那么就要使用this.关键字:
public class Gilrfirend{
	private int age;
	public void method(){
	int age = 10;
	system.out.println(this.age)
	}
}

运行结果:0

eg:

package com.itheima.Test002;

public class Girlfriend01 {
        //属性
        private String name;
        private int high;
        private String gender;
        private int age;

        public void setName(String name) {
                this.name = name;//直接使用成员变量,不使用局部变量
                /*等号右边的name触发就近原则表示局部变量string name,
                而string name记录的是主方法里面的setName传递过来的诗诗
                局部变量表示测试类中调方法传递过来的数据
                 */
                //等号的左边表示成员位置的name

        }

        public String getName() {
                return name;
        }

        public void setAge(int age) {
                if (age >= 16 && age <= 50) {
                        this.age = age;//直接使用成员位置的age
                } else {
                        System.out.println("非法数据");
                }
        }

        public int getAge() {
                return age;
        }
        public void setHigh(int high) {
                this.high = high;//直接使用成员变量,不使用局部变量
        }

        public int getHigh() {
                return high;
        }

        public void setGender(String gender) {
                this.gender = gender;//直接使用成员变量,不使用局部变量
        }

        public String getGender() {
                return gender;
        }

        //行为
        public void eat() {
                System.out.println("她会吃饭");
        }

        public void play() {
                System.out.println("她会干活");
        }
}
package com.itheima.Test002;

import com.itheima.Test001.Girlfriend01;

public class Girlfriend01Test01 {
    public static void main(String[] args) {
        Girlfriend01 p1 = new Girlfriend01();//创建一个对象
        p1.setName("小诗诗");
        p1.setAge(18);
        p1.setGender("女");
        p1.setHigh(170);
        System.out.println(p1.getName());
        System.out.println(p1.getAge());
        System.out.println(p1.getGender());
        System.out.println(p1.getHigh());
        p1.eat();
        p1.play();
        com.itheima.Test001.Girlfriend01 p2 = new Girlfriend01();//创建第二个对象
        p2.setName("筱筱");
        p2.setAge(22);
        p2.setGender("男");
        p2.setHigh(168);
        System.out.println(p2.getName());
        System.out.println(p2.getAge());
        System.out.println(p2.getGender());
        System.out.println(p2.getHigh());
        p2.eat();
        p2.play();
    }
}

运行结果:
小诗诗
18

170
她会吃饭
她会干活
筱筱
22

168
她会吃饭
她会干活

标签:p2,p1,封装,System,关键字,println,java,public,out
From: https://www.cnblogs.com/xiao-xiao1024/p/17376916.html

相关文章

  • 5-关于JavaEE的版本
    JavaEE目前最高版本是JavaEE8JavaEE被Oracle捐献了,Oracle将JavaEE规范捐献给Apache了。Apache把JavaEE换名了,以后不叫JavaEE了,以后叫做jakartaEE。以后没有JavaEE了。以后都叫做JakartaEE。JavaEE8版本升级之后的"JavaEE9",不再是"JavaEE9"这个名字了,叫做JakartaEE9Java......
  • JavaScript 面试题
    一、event.stopPropagation和 event.preventDefault的区别1、event.stopPropagation(停止传播)   用于阻止捕获和冒泡事件的进一步传播。但是不能阻止同一Dom节点上的其它事件被调用。2、event.preventDefault(阻止默认)   方法可防止元素的默认行为。比如a标签的......
  • JAVA中ArrayList集合详解
    JAVA中ArrayList集合详解创建集合的对象:ArrayList<String>list=newArrayList<>();<>中的是泛型,用来限定集合中储存数据类型 方法名说明booleanadd(Ee)添加元素,返回值表示是否添加成功booleanremove(Ee)删除指定元素,返回值表示是否删除成功Eremo......
  • javaAIO是什么
    网络IO进行时,需要将用户态切换为内核态,操作系统内核在进行网络IO时有等待数据、拷贝数据两个阶段。无论是阻塞IO、非阻塞IO、多路复用,都是同步IO,因为他们都是等数据准备好了,再使用当前线程去获取数据。IO类型等待数据阶段拷贝数据阶段用户态和内核态切换次数阻塞IOr......
  • Java--抽象
    Java--抽象抽象的概念如果父类当中的方法不确定如何进行{}方法体的实现,那么这就应该是一个抽象方法抽象方法和抽象类的格式抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束.抽象类:抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可.代码示......
  • Java中对比两个字符串的相似度
    Java中对比两个字符串的相似度的方法,以下整理了两个方式比对方法,同样的字符串不同的计算方式得到的结果也是不同的:packagetest;/***对比俩个字符串的相似度*@authorsanshi*/publicclassStrUtil{/***获取最长子串(参数顺序与字符串长短无关)......
  • java -cp 错误:找不到或无法加载主类
    java-cp错误:找不到或无法加载主类1.问题场景在一个项目开发中,我需要写一个windows的bat脚本,需要在里面调用SpringBoot项目生成的jar包,我在调用classes下面的jar时通过调用jar包去调用jar包中的某个.java类总是报错误:找不到或无法加载主类最后搞的我心态都崩了,明......
  • 实践分享:打造极具高扩展性的JavaScript SDK
    SDK(SoftwareDeveloperKit)是使用FeatureProbe服务必不可少的工具之一。SDK能将用户的应用程序连接到FeatureProbe服务,根据用户的配置获取开关的结果,还能将开关的访问情况上报给FeatureProbe,进而实现A/B实验的能力。FeatureProbe目前对外提供十余种主流开发语言的SDK,包括......
  • Java实验十
    1importjava.io.*;2importjava.util.Arrays;3importjava.util.InputMismatchException;4importjava.util.Scanner;56publicclassAverageScore{7publicstaticvoidmain(String[]args)throwsIOException{8//System.out.println......
  • JavaWeb回顾与小结(六)
    项目实战-新增员工思路接收并封装参数,调用service方法保存数据,响应result@PostMapping@RequestBody补充实体基础属性,调用mapper接口进行保存数据操作insertintoemp(...)values(?,?,?);文件上传简介文件上传,指将本地图片,视频,音频等文件上传到服务器,供其他用......