Java-类-对象 - 对象内存图 成员变量和局部变量的不同 this关键字 构造方法 封装 权限修饰符 标准javaBean20

 

 

 

 

 

package com.demo.css;

public class css01 {
//    java要创造对象,必须要有类的存在
//    类:一组相关属性和行为的集合,看做是对象的设计图
//    对象:是根据设计图,创造出来的实体

//    类和对象的关系:
//        1.依赖关系:根据类,创造对象
//        2.数量关系:一个类可以创造多个对象
//    类的形成:
//        类的本质:对事物进行的描述
//        属性:在代码中使用成员变量表示,成员变量跟之前定义的格式一样,只不过位置发生了变化,类方法外
//        行为:在代码中使用成员方法去表示,成员方法和之前定义的方法一样,只不过要去掉static关键字


//    1.创造对象的格式:
//        类名 对象名 = new 类名(); 比如:int arr[] = new int[];
//    2使用对象成员变量的格式
//        对象名.成员变量
//    3使用对象成员方法的格式
//        对象名.成员方法
    String name = "张三";
    int age = 18;
    

}

  

package com.demo.css;

public class css02 {
    public static void main(String[] args) {
        css01 css = new css01();
        System.out.println(css.name);
        System.out.println(css.age);
    }
}

 练习:

package com.demo.css;

public class phone {
    String brand;
    String color;
    int price;

    public void call(String name) {
        System.out.println("给" + name + "打电话");
    }
    public void Mess() {
        System.out.println("群发短信");
    }
}
package com.demo.css;

public class phoneCss {
    public static void main(String[] args) {
        phone ph = new phone();
        ph.brand = "小米";
        ph.color = "白色";
        ph.price = 99;
        System.out.println(ph.brand+"--------"+ph.color+"-----"+ph.price);
        phone ph2 = new phone();
        ph2.brand = "红米";
        ph2.color = "黑色";
        ph2.price = 9999;
        System.out.println(ph2.brand+"--------"+ph2.color+"-----"+ph2.price);
        ph.call("张三");
        ph.Mess();
        ph2.call("李四");
        ph2.Mess();

    }
}

  图书案例:

package com.demo.css;

public class book {
    String id;
    String name;
    double price;

    public void show(String id,String name,double price) {
        System.out.println(id+name+price);
    }
}
package com.demo.css;

public class Bookcss {
    public static void main(String[] args) {
        book bk = new book();
        bk.id = "001";
        bk.name = "三国";
        bk.price = 88.00;
        bk.show(bk.id,bk.name,bk.price);
        book bk2 = new book();
        bk2.id = "002";
        bk2.name = "水浒";
        bk2.price = 88.00;
        bk2.show(bk2.id,bk2.name,bk2.price);
        book bk3 = new book();
        bk3.id = "003";
        bk3.name = "富婆通讯录";
        bk3.price = 88.00;
        bk.show(bk3.id,bk3.name,bk3.price);
    }
}

  对象内存图: 

    单个对象内存图:

 

 

 两个对象内存图:

  数据空间都是独立的,互不打扰,也叫对象引用共同图

  

 

 

 两个引用指向内存图

  

 

 

 

 成员变量和局部变量的不同:

  1类中编写位置的不同:

 

 

 

 

 

 

 this关键字: 

  

 

 

 

 

 

 

 

构造方法:

 

 

 

 

 

 

package com.demo.structure;

public class stu {
    //    构造方法:创造对象时,要执行的方法
//    格式:
//        1方法名与类名一致,大小写也一致
//        2.没有返回类型,连void也不能有
//        3.没有具体的返回值()不能return 返回结果
//    执行时机:
//        创建对象时执行
//        每创建一次对象,就会执行一次
//    作用:
//        本质作用:创建对象
//        执行时机:可以创建对象时,给对象的数据初始化
//    注意事项:
//        一个类中,没有编写构造方法,系统会提供一个[默认的][无参数]的构造方法
//        一个类中,手动编写了构造方法,系统不会默认提供那个方法

    public static void main(String[] args) {
        stuDemo stu = new stuDemo();
        System.out.println(stu);
    }
}
package com.demo.structure;

public class stuDemo {
    public stuDemo(){

        System.out.println("我是stuDemo的构造方法");
    }
}

 

封装:

 

 

 

 

 

权限修饰符:
private:访问权限很低,只能在同一个类中访问,使用会,在另一个类使用会爆红
(default):同一个类,同一个包中
protected:同一个类,同一个包中,不同包的种类
public:任意位置访问
package com.demo.structure;

public class authority {
    //私有成员变量,为了安全性
   private int age;

    public void setAge(int age) {
        if(age>= 1 &&120>=age){
            this.age = age;
        }else {
            System.out.println("输入有误");
        }
    }

    public int getAge() {
        return age;
    }
}
package com.demo.structure;

public class authorityDome {
    public static void main(String[] args) {
      /*
        权限修饰符:
            private:访问权限很低,只能在同一个类中访问,使用会,在另一个类使用会爆红
            (default):同一个类,同一个包中
            protected:同一个类,同一个包中,不同包的种类
            public:任意位置访问

        */
        authority sut = new authority();
        sut.setAge(199);
        int age = sut.getAge();
        System.out.println(age);
    }
}

  标准javaBean:

    javaBean:实体类:封装数据的类

  搜索pgt,安装

  

 电影的案例:

package com.demo.film;
//1.这个类只对数据做封装,不做业务处理
public class movie {
    private int id;
    private String title;
    private String time;
    private double score;
    private String area;
    private String type;
    private String director;
    private String starring;

    public movie() {
    }

    public movie(int id, String title, String time, double score, String area, String type, String director, String starring) {
        this.id = id;
        this.title = title;
        this.time = time;
        this.score = score;
        this.area = area;
        this.type = type;
        this.director = director;
        this.starring = starring;
    }

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取
     * @return title
     */
    public String getTitle() {
        return title;
    }

    /**
     * 设置
     * @param title
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * 获取
     * @return time
     */
    public String getTime() {
        return time;
    }

    /**
     * 设置
     * @param time
     */
    public void setTime(String time) {
        this.time = time;
    }

    /**
     * 获取
     * @return score
     */
    public double getScore() {
        return score;
    }

    /**
     * 设置
     * @param score
     */
    public void setScore(double score) {
        this.score = score;
    }

    /**
     * 获取
     * @return area
     */
    public String getArea() {
        return area;
    }

    /**
     * 设置
     * @param area
     */
    public void setArea(String area) {
        this.area = area;
    }

    /**
     * 获取
     * @return type
     */
    public String getType() {
        return type;
    }

    /**
     * 设置
     * @param type
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * 获取
     * @return director
     */
    public String getDirector() {
        return director;
    }

    /**
     * 设置
     * @param director
     */
    public void setDirector(String director) {
        this.director = director;
    }

    /**
     * 获取
     * @return starring
     */
    public String getStarring() {
        return starring;
    }

    /**
     * 设置
     * @param starring
     */
    public void setStarring(String starring) {
        this.starring = starring;
    }
}

  

package com.demo.test;
//2.这个类做一个电影启动的封装
import com.demo.film.movie;

import java.util.Scanner;

public class movieServe {
    private movie movies[];
    private Scanner sc = new Scanner(System.in);

    public movieServe(movie[] movies) {
        this.movies = movies;

        System.out.println(this.movies);
    }

    //启动电影信息管理系统
    public void start() {
        lo:
        while (true) {
            System.out.println("电影信息管理系统------");
            System.out.println("请输入您的选择:");
            System.out.println("1.查询全部电影信息");
            System.out.println("2.根据id查询电影信息");
            System.out.println("3.退出");
            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    Querymovieinformation();
                    break;
                case 2:
                    QuerymovieinforByid();
                    break;
                case 3:
                    System.out.println("退出");
                    break lo;
                default:
                    System.out.println("您的输入有误,请检查");
                    break;
            }
        }
    }
    //    根据id查询电影信息
    private void QuerymovieinforByid() {
        System.out.println("请输入您要查询的电影编号:");
        int id = sc.nextInt();
        for (int i = 0; i < movies.length; i++) {
            movie movie = movies[i];
            if (movie.getId() ==id){
                System.out.println(movie.getId()+"---"+movie.getTitle()+"---"+movie.getScore()+"---"+movie.getTime()+"---"+movie.getArea()+"---"+movie.getDirector()+movie.getStarring());
                return;
            }
        }
        System.out.println("您所输入的编号不存在");
    }

    //    查询全部电影信息
    private void Querymovieinformation() {
        for (int i = 0; i < movies.length; i++) {
            movie movie = movies[i];
            System.out.println(movie.getTitle()+"---"+movie.getScore());
        }
    }
}

  

package com.demo.test;
import com.demo.film.movie;
//3.这个类做业务的处理
public class movieTest {
    public static void main(String[] args) {
        movie movie1 = new movie(1,"上海堡垒2","2023",2.3,"中国大陆","恶搞 科幻","华涛","鹿晗");
        movie movie2 = new movie(2,"老八秘制小汉堡","2023",2.3,"中国大陆","恶搞 科幻","华涛","鹿晗");
        movie movie3 = new movie(3,"纯洁心灵","2023",2.3,"中国大陆","恶搞 科幻","华涛","鹿晗");

        movie movies[] = {movie1,movie2,movie3} ;

        movieServe movieServe = new movieServe(movies);
        movieServe.start();
    }
}

  

posted @ 2023-03-04 18:03  文采呱呱  阅读(23)  评论(0编辑  收藏  举报