JavaSE面对对象(基础)—封装

面对对象—封装

封装

将一个物品封装起来,外界不能直接使用,从而提高物品的安全性。

面对对象的三大特征:封装、继承、多态

什么是封装思想:

  • 隐藏对象内部的复杂性,只对外提供公开,公共的接口与,便于外界调用,从而提高系统的可扩展性,可维护性、安全性、通俗的来说就把该隐藏的隐藏起来(细节),该暴露的暴露出来(对外提供的供别人使用的接口),这就是封装思想。
  • *我们只需要调用这个接口(功能 )*即可,此接口背后封装的细节就开始执行,但是我们不需要关注细节,只关注公共接口怎么调用
  • 将细节隐藏起来,不让外界随便使用,但是我们可以提供一个公共的接口让外接使用隐藏起来的细节–>封装思想

问题:

1、定义成员变量,只要是new出来的对象,就可以随便调用,随便赋值,哪怕是不合理的值我们也挡不住怎么办?将属性封装起来(隐藏细节)
	a、关键字:`private`(私有化)    //被private修饰的成员只能在本类中使用,在别的类中使用不了
	b、注意:  将代码放到一个方法中,也是封装的体现。只不过`private`最具有代表性
	c、private的使用
		修饰成员变量:  private  数据类型  变量名
		修饰方法:将public改成private,其他的都一样
2、问题:属性被私有化了,外界直接调用不了,那么此时属性就不能直接赋值取值,所以需要提供公共的接口
	get/set方法
	
	set方法:为属性赋值
	get方法:获取属性值
public class person {
    private String name;
    private int age;
    //为name提供get/set方法
    public  void setName(String xingMing){
        name = xingMing;
    }
    public String getName(){
        return name;
    }
    //为age提供get/set方法
    public void  setAge(int nianling){
        if (nianling < 0|| nianling > 100){
            System.out.println("岁数不合理");
        }else {
            age = nianling;
        }
    }

    public int getAge() {
        return age;
    }
}
public class test01 {
    public static void main(String[] args) {
        person person = new person();
        person.setName("张三");
        String name = person.getName();
        int age = person.getAge();
    }
}

小结:

  • 用private将属性封装起来,外界不能直接调用,从而保护属性
  • 对外提供一套公共的接口(set/get方法),让外界通过公共接口间接使用封装起来的属性

this介绍及使用

介绍:

  1. 如果成员变量和局部变量重名时,我们遵循”就近原则“,先访问局部变量

  2. this概述:代表的是当前对象

  3. 作用:this可以区分重命名的成员变量和局部变量 this点出来就一定是成员的变量

问:this代表当前对象,那么具体代表哪个对象呢?

答:哪个对象调用的this所在的方法,this就代表哪个对象

public class person {
    String name;
    //哪个对象调用的this所在的方法,this就代表哪个对象
    public void speak(String name){
        System.out.println(this +"--------");
        System.out.println(this.name+"您好,我是"+name);
    }
}
public class test01 {
    public static void main(String[] args) {
        person person = new person();
        System.out.println(person+"=========");
        person.name="张三";
        person.speak("李四");
        System.out.println("=========");
        person person1 = new person();
        System.out.println(person1+"======");
        person1.name="王二";
        person1.speak("王二麻子");
    }
}

构造方法

介绍

1、概述:方法名和类名一致并且能初始化对象的方法
2、分类:
		a、无参构造:没有参数(重点)
		b、有参构造:有参数、参数只为指定的属性赋值(重点)
		c、满参构造:给所有属性赋值
3、特点:
		a、方法名和类名一致、
		b、没有返回值,连void的都没有

空参构造

1、格式:
	public 类名(){

	}
2、作用: new对象使用	
3、特点:每个类中默认都有一个无参结构,不写也有,jvm会自动提供
4、使用:new对象就是在调用构造方法

有参构造

1、格式:
public 类名(形参){
  为属性赋值
}
2、作用:  
  	a.new对象使用
  	b.为属性赋值
3、特点:
jvm不会自动提供有参构造,但是将有参构造手写出来,jvm将不再提供无参构造,所以建议有参、无参的构造都手写上去
public class Person {
    private String name;
    private int age;

    //无参构造
    public Person(){
        System.out.println("我是无参构造");
    }

    //有参构造
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}
public class Test01 {
    public static void main(String[] args) {
        Person person = new Person();

        Person person2 = new Person("涛哥", 18);
        System.out.println(person2.getName()+"..."+person2.getAge());

    }
}
  • 如何快速知道调用的成员是哪个类中的哪个成员
  • 按照ctrl+鼠标点击对应的成员变量——>会跳到对应位置

JavaBean

JavaBeanjava语言编写类的一种标准规范,符合JavaBean的类,要求:

  1. 类必须是具体的(非抽象 abstract)和公共的, public class 类名
  2. 并且具有无参数的构造方法,有参构造
  3. 成员变量私有化,并提供用来操作的成员变量的setget方法
public class person {
    private String name;
    private int age;

    //无参构造
    public person() {
    }

    //有参构造
    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 void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
public class test01 {
    public static void main(String[] args) {
        person person1 = new person();
        person1.setName("李四");
        person1.setAge(10);
        System.out.println("姓名"+person1.getName()+"年龄"+person1.getAge());
    }
}

编写符合JavaBean 规范的类,以学生类为例,标准代码如下:

//快速生成标准javabean通用快捷键:alt+insert
public class Student {
    private int sid;
    private String sname;

    public Student() {
    }

    public Student(int sid, String sname) {
        this.sid = sid;
        this.sname = sname;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }
}

public class Test01 {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setSid(1);
        s1.setSname("王三");
        System.out.println(s1.getSid()+"..."+s1.getSname());

        System.out.println("==============");

        Student s2 = new Student(2, "李四");
        System.out.println(s2.getSid()+"..."+s2.getSname());
    }
}

小结:

  1. 知道private的作用吗?私有的,别的类不可以直接调用
  2. 知道空参构造作用吗?new对象
  3. 知道有参构造作用吗?new对象 为属性赋值
  4. 知道set方法作用吗?为属性赋值
  5. 知道get方法作用吗?获取属性值
  6. 知道this的作用吗?区分重名的成员变量和局部变量
  7. 如何快速生成标准javaBean吗? alt+insert

JavaBean怎么来的

将来的JavaBean都是和数据库的表相关联

类名 ——> 表名

属性名 ——> 列名

对象 ——> 表中每一行数据

属性值 ——> 表中单元格中的数据

在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值