javase复习day08

面向对象

类和对象

//测试类    
public static void main(String[] args) {
        Phone p = new Phone();

        p.bread="小米";
        p.price = 1999.98;

        System.out.println(p.bread);
        System.out.println(p.price);

        p.call();
        p.play();

        Phone p1 = new Phone();

        p1.bread="苹果";
        p1.price = 8999.98;

        System.out.println(p1.bread);
        System.out.println(p1.price);

        p1.call();
        p1.play();

    }

//javaBean类
public class Phone {
    String bread;
    double price;
    public void call(){
        System.out.println("在打电话");
    }

    public void  play(){
        System.out.println("手机在玩游戏");
    }

}

注意事项

练习一:

//测试类
    public static void main(String[] args) {
        Girlfriend g1 = new Girlfriend();
        g1.name = "小刘";
        g1.age = 23;
        g1.sex= 2;
        g1.eat();
        g1.sleep();
        System.out.println(g1.name);
        System.out.println(g1.age);
        System.out.println(g1.sex);
        System.out.println("========================================");
        Girlfriend g2 = new Girlfriend();
        g2.name = "小诗诗";
        g2.age = 20;
        g2.sex= 2;
        g2.eat();
        g2.sleep();
        System.out.println(g2.name);
        System.out.println(g2.age);
        System.out.println(g2.sex);
    }
//javabean类
public class Girlfriend {
    //成员变量,(属性)
    String name;
    int age;
    int sex;


    //成员变量(方法)
    public void eat(){
        System.out.println(this.name+"在吃饭");
    }
    public void sleep(){
        System.out.println(this.name+"在睡觉");
    }
}

封装

面向对象三大特征:

        封装,继承,多态。

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

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

小结:

pricate关键字

设置为私有。本类外无法直接访问。

//javaBeab类
public class Girlfriend {
    //成员变量,(属性)
    private String name;
    private int age;
    private int sex;

    public void setName(String Name){
        name = Name;
    }
    public String getName(){
        return name;
    }

    public void setAge(int n){
        if (n>=18&&n<=50){
            age = n;
        }else {
            System.out.println("数据有误");
        }

    }
    public int getAge(){
        return age;
    }

    public void setSex(int g){
        sex = g;
    }
    public int getsex(){
        return sex;
    }

    //成员变量(方法)
    public void eat(){
        System.out.println(this.name+"在吃饭");
    }
    public void sleep(){
        System.out.println(this.name+"在睡觉");
    }
}
//测试类
public class GirlfriendTset {
    public static void main(String[] args) {
        Girlfriend g1 = new Girlfriend();
        g1.setName("小刘");
        g1.setAge(23);
        g1.setSex(2);
        g1.eat();
        g1.sleep();
        System.out.println(g1.getName());
        System.out.println(g1.getAge());
        System.out.println(g1.getsex());
        System.out.println("========================================");
        Girlfriend g2 = new Girlfriend();
        g2.setName("小诗诗");
        g2.setAge(20);
        g2.setSex(2);
        g2.eat();
        g2.sleep();
        System.out.println(g2.getName());
        System.out.println(g2.getAge());
        System.out.println(g2.getsex());

    }
}

小结:

this关键字

构造方法

package test4;

public class Student {

    //如果没有写构造方法那么虚拟机会自动添加空参的构造方法

    public Student(){
        System.out.println("看看我执行了么");
    }
    public Student(String name ,int age){
        System.out.println("执行有参构造");
        this.name=name;
        this.age=age;
    }

    private String name ;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
//=====================================================
    public static void main(String[] args) {
        Student s1 = new Student("小赵",20);

        System.out.println(s1.getName());
        System.out.println(s1.getAge());
    }

注意事项

小结

构造方法概述:

创建对象时虚拟机自动调用构造方法,作用是给成员变量进行初始化。

标准的javaBean类

package test5;

public class User {
    private String username;
    private String password;
    private String email;
    private String gender;
    private int age;

//PTG插件一键生成JavaBean
    public User() {
    }

    public User(String username, String password, String email, String gender, int age) {
        this.username = username;
        this.password = password;
        this.email = email;
        this.gender = gender;
        this.age = age;
    }

    /**
     * 获取
     * @return username
     */
    public String getUsername() {
        return username;
    }

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

    /**
     * 获取
     * @return password
     */
    public String getPassword() {
        return password;
    }

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

    /**
     * 获取
     * @return email
     */
    public String getEmail() {
        return email;
    }

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

    /**
     * 获取
     * @return gender
     */
    public String getGender() {
        return gender;
    }

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

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

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

    public String toString() {
        return "User{username = " + username + ", password = " + password + ", email = " + email + ", gender = " + gender + ", age = " + age + "}";
    }
}

对象内存图

一个对象的内存图

两个对象的内存图

两个引用指向同一个对象

基本数据类型和引用数据类型

this的内存原理

this的作用:区分局部变量和成员变量。

this的本质:所在方法调用者的地址值。

成员变量和局部变量的区别

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值