栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java对象之封装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java对象之封装

对象 对象的使用

创建对象

格式:类名 对象名 = new 类名();

范例:student s = new student();

使用对象

    使用成员变量

      格式:对象名.变量名

      范例s.age

    使用成员变量

      格式:对象名.方法名()

      范例:s.name();

static

static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。

案例

创建Student 对象

package studentdome;
​
public class Student {
    String name;
    int age;
    public void study(){
        System.out.println("天天学习");
    }
    public void sum(){
        System.out.println("多晒晒太阳");
    }
}

调用 对象

package studentdome;
​
public class StudentDome {
    public static void main(String[] args) {
        Student s = new Student();
        s.age = 19;
        s.name = "ffy";
​
        System.out.println(s.age +" "+s.name);
       s.study();
       s.sum();
    }
}
对象的内存图

对个对象指向相同的对象

如下:new 一个新的对象名字为s1

用s2 也指向s1

最后地址相同s2直接对s1修改

最后输出结果相同

    创建一个对象先加载打栈内存

    new的 对象和变量到堆内存

    调用 s1先指向栈内存 在指向堆内存

    单个内存 和多内存一样 和上面不同

package studentdome;
//对象Student在上面
public class Studentlost {
    public static void main(String[] args) {
        Student s1 =new Student();
        s1.name = "樊帅营";
        s1.age =20;
        System.out.println(s1.name+" ,"+s1.age);
        Student s2 = s1;
        s1.name = "小帅";
        s1.age =16;
        System.out.println(s1.name+" ,"+s1.age);
        System.out.println(s2.name+" ,"+s2.age);
​
    }
}
最后输出的结果为:
    樊帅营 ,20
    小帅 ,16
    小帅 ,16
成员变量和局部变量的区别
区别成员变量局部变量
类中位置不同类中之外方法或者方法声明上
内存中不同堆内存中栈内存
生命周期不同随着对象存在而存在随着对象消失而消失随着方法调用而存在随着方法调用完毕而消失
初始化值不同有默认的初始化值没有默认的初始化值必须定义完,赋值才能使用
封装 封装简介

    封装的概述

      是面向对象三大特征之一(封装,继承,多态)

      是面向对象编程语言对客观世界模拟,客观世界里的成员变量都是隐藏在对象内部的外部是无法直接操作的

    封装的原则

    将类中的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该提供的方法来实现对隐藏信息的操作和访问成员变量private, 提供对应的get/set 方法

    封装的好处

    通过方法来操控成员变量的操作,提高代码的安全性

    把代码进行封装,提高了代码的复用性

关键词 private

    利用set 来更改私有变量

    利用get 来得到私有变量

    利用set方法给私有变量赋值

    最有get出结果

    PStudent对象

package studentdome;
​
public class PStudent {
    //有默认初始值
    //全局变量有默认初始值
    private String name;
    private int age;
    public void setAge(int a){
        //如果年龄没有负数,可以写一个判断来返回年龄
        age = a;
     }
     //私有变量 利用get 和set 方法可以更改
    //也可以在方法中写判断
     public int getAge(){
        return  age;
     }
    public void setName(String a){
        name = a;
    }
    //注意定义类型要与返回类型相同
    public String getName(){
        return name;
    }
    public void show(){
        System.out.println(name+","+age);
    }
}

main调用对象

package studentdome;
​
public class privatestudent {
    public static void main(String[] args) {
        PStudent s =new PStudent();
        s.setName("樊帅营");
        s.setAge(19);
        s.show();
        //利用get方法更改格式 就是把show 中打印出的,改成其他格式
        System.out.println(s.getName()+"    "+s.getAge());//一般测试的时候一种格式就够了
    }
}
结果:
    樊帅营,19
    樊帅营    19
get/set固定格式
private 定义类型 名字1; 
get后和set后首字母要大写
public void set名字1(定义类型 名字2){
        名字1 = 名字2
}
public 定义类型 get名字1(){
    return 名字1;
}
//调用 
//用set给名字1赋值
对象名字.set名字1(赋值)
  获得结果   对象名字.get名字1()
this关键字

    this修饰的变量用于指代成员变量(全局变量 叫法不同)

      方法的修饰如果变量名相同,不带this修饰的变量指的是形参,而不是成员变量

      方法的形参没有与成员变量名字相同,不带this修饰的变量指的是成员变量

    什么时候使用this 呢? 解决局部变量隐藏成员变量

      this代表所在类的对象的引用

        记住:方法被那个对象调用,this就代表那个对象

构造方法

    构造方法的概述

    构造方法是一种特殊的方法

    作用创建对象

    格式:

    public class 类名{
            修饰符 类名(参数){
            }
    }
    public class Student{
       public Student() {
            //构造方法内书写的内容
           //这个是无参构造
        }
    }

      构造方法当建立对象的时候直接就调用构造方法

构造方法的注意事项

    构造方法的创建

    如果没有定义构造方法,系统默认将给出一个默认的无参构造方法

    如果定义了构造方法,系统将不在提供默认的构造方法

    构造方法的重载

    如果自定义了带参构造方法,还要使用无参构造方法,就必须写一个无参构造方法

    推荐的使用方法

    无论是否使用,都手工书写无参构造方法.

标准类的制作

标准类的制作有两种方法

    无参构造 后用set 方法给对象赋值 最后并调用

    有参构造 ,并在创建对象后面括号里面赋值 并调用

package SStudent;

public class StudentDome {
    public static void main(String[] args) {
        SStudent s = new SStudent();
        s.setAge(19);
        s.setName("樊帅营");
        s.show();
        SStudent s1 = new SStudent("樊帅营", 18);
        s1.show();
    }
}

    调用的对象

    package SStudent;
    
    public class SStudent {
        private String name;
        private int age;
        public SStudent(){ }
        public SStudent(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 void show(){
            System.out.println(name +","+age);
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号