day06 面向对象基础知识(一)

本学习内容来着b站:黑马程序员

注:给自己整无语了,打卡失败了,照理来说,这应该是第四天来着,面向对象这块听了一遍没听懂,我又听了一遍,现在感觉有点上道了,但是我知道这只是最简单的,还有更难的再等我,编程路漫漫啊,要继续努力!如果你看到了这篇文章能对你有所帮助,给我点个赞或者评论也是对我更新的最大动力!感谢,内容如果有错误,欢迎各位兄弟姐妹批评指正!!!

一.面对对象需要掌握的内容

1. 啥是面向编程

1.1什么是类,什么是对象

1.2 如何设计类

 代码实现:car类



public class Car {
    //成员变量
    String name;
    double price;
    //方法
    public void start(){
        System.out.println(name + "启动了");
    }
    public void run(){
        System.out.println("价格是:" + price + "的" + name +"跑得很快");
    }
}

 代码实现:测试类

//目标学会设计对象并使用
public class Test1 {
    public static void main(String[] args) {
        //创建汽车对象
        Car c = new Car();
        c.name = "宝马";
        c.price = 38.9;
        System.out.println(c.name);
        System.out.println(c.price);
        c.start();
        c.run();

        System.out.println("=============");
        Car c1 = new Car();
        c1.name = "奔驰";
        c1.price = 39.5;
        System.out.println(c1.name);
        System.out.println(c1.price);
        c1.start();
        c1.run();
    }
}

 1.3定义类的注意事项 

 代码实现:Student类

public class Student {
    public String name;
    boolean flag;
}
class Animal{

}
class Dog{

}

代码实现:测试类 

//目标:理解定义类的几个补充注意事项,为后续知识的学习做准备
public class Test2 {
    public static void main(String[] args) {
        /*1、类的首字母建议大写,满足驼峰模式,不能使用关键字,
             必须是合法标识符,且有意义
          2、一个Java文件中可以定义多个class类,但只能一个类是public修饰,
             而且通过public修饰的类名必须成为代码文件名
             实际开发还是建议一个代码文件只定义一个类
          3、成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值:
             一般无需指定初始化值,存在默认值
             默认值的规则:
             byte short int long    O
             double flat            0.0
             boolean                false
             String等引用类型         null
         */
        Student s = new Student();
        System.out.println(s.name);
        System.out.println(s.flag);

    }
}

2.对象内存图

2.1两个对象内存图 

2.2 两个变量指同一个对象

 代码实现:Student类

public class Student {
    String name;
    char sex;
    String hobby;
    public void study(){
        System.out.println("名称:" + name + ",性别:" + sex + ",爱好:" + hobby
        + "开始学习了!");
    }
}

代码实现:测试类 

//目标:理解2个变量指向一个对象的内存机制
public class Test {
    public static void main(String[] args) {
        //1、创建学生对象
        Student s1 = new Student();
        s1.name = "小明";
        s1.sex = '男';
        s1.hobby = "睡觉,游戏,学习";
        s1.study();

        //把s1变量赋给一个学生类型的变量s2
        Student s2 =s1;
        System.out.println(s2);
        System.out.println(s1);

        s2.hobby ="爱提问";
        System.out.println(s2.name);//小明
        System.out.println(s2.sex);//男
        System.out.println(s1.hobby);//爱提问
        s2.study();
    }
}

当变量赋值为null,Java为定时清理 Java存在自动垃圾回收器

3.学会使用构造器 

3.1构造器的作用,分类格式

代码实现:car类 

public class Car {
    String name;
    double price;

    //无参数构造器
    public Car(){
        System.out.println("==无参数构造器被调用了=");
    }
    //有参数构造器
    public Car(String n,double p){
        System.out.println("==有参数的构造器被调用了=");
        name = n;
        price = p;
    }
}

代码实现:测试类

//目标:认识构造器,明白两种类型的构造器的作用
public class Test {
    public static void main(String[] args) {
        //通过调用构造器得到对象
        Car c = new Car();
        c.name = "宝马";
        c.price = 38.9;
        System.out.println(c.name);
        System.out.println(c.price);

        //调用有参构造器
        Car c2 = new Car("奔驰",50);
        System.out.println(c2.name);
        System.out.println(c2.price);
    }
}

3.2构造器的注意事项 

 
3.3构造器总结  

 

4.this关键字 

4.1this关键字是什么

 

代码实现:car类

public class Car {
    String name;
    double price;
    //有参构造器
    public Car() {
        System.out.println("无参数构造器中的this:" + this);
    }
    public Car(String name, double price) {
        this.name = name;
        this.price = price;
    }
    public void gowith(String name) {
        System.out.println(this.name + "正在和" + name + "比赛");
    }
    public void run() {
        System.out.println("方法中的this:" + this);
    }
}

代码实现:测试类 

//目标:理解this关键字的作用
public class Test {
    public static void main(String[] args) {
        //创建汽车对象
        Car c = new Car();
        c.run();

        System.out.println(c);

        System.out.println("==================");
        Car c2 = new Car("奔驰",50);
        System.out.println(c2.name);
        System.out.println(c2.price);

        c2.gowith("宝马");

    }
}

4.2this关键字的作用

 4.3总结

 

5.封装 

 5.1什么是封装

5.2 怎么让封装更好

代码实现:Student类

public class Student {
    //1、成员变量 使用privates修饰,只能在本类中访问了
    private int age;
    //2、提供成套的getter和setter方法暴露其取值和赋值
    public void setAge(int age){
        if(age >= 0 && age <=200 ){
            this.age = age;
        }else {
            System.out.println("您的年龄数据有问题:");
        }
    }
    public int getAge(){
        return age;//同一个类里面可以直接返回age
    }

}

代码试下:测试类 

//目标:学习如何进行更好的封装。
public class Test2 {
    public static void main(String[] args) {
        Student s = new Student();
        s.setAge(23);//赋值
        System.out.println(s.getAge());//取值
    }
}

6.标准JavaBean

6.1JavaBean是什么 

 

代码实现:User类

public class User {
    //1、成员变量使用private
    private String name;
    private double height;
    private double salary;

    //3、要求提供无参构造器,有参数构造器是可选

    public User() {
    }
    public User(String name, double height, double salary) {
        this.name = name;
        this.height = height;
        this.salary = salary;
    }
    
    //2、必须为成员变量提供成套的setter和getter方法

    public String getName() {
        return name;
    }

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

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

代码实现:测试类

//目标 :记住JavaBean的书写要求
public class Test {
    public static void main(String[] args) {
        //1、无参数构造器创建对象封装一个用户信息
        User u1 = new User();
        u1.setName("杭州蔡徐坤");
        u1.setHeight(183);
        u1.setSalary(19999);
        System.out.println(u1.getName());
        System.out.println(u1.getHeight());
        System.out.println(u1.getSalary());

        //3、有参数构造器创建对象封装一个用户信息
        User u2 = new User("杭州迪丽热巴",170,19999);
        System.out.println(u2.getName());
        System.out.println(u2.getHeight());
        System.out.println(u2.getSalary());
    }
}

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

二.总结 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值