人性化Java-类和对象(最细详解易懂)

发布于:2022-10-14 ⋅ 阅读:(248) ⋅ 点赞:(0)

⒈.面向对象的初步认知

      ⑴什么是面向对象:面向对象的方法主要是把事物给对象化,包括其属性和行为。面对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

      ⑵面向对象与面向过程

以洗衣服举例解释

①面向对象:不需要关注洗衣服的过程

总共有四个对象:人,衣服,洗衣粉,洗衣机,

整个过程主要是:人,衣服,洗衣粉,洗衣机,四个对象之间交互完成的,人不需要管洗衣机具体洗衣服的,是如何甩干的

eg:

②面向过程注重的是洗衣服的过程

◔缺点:扩展或者维护会比较麻烦

2.类的定义和使用

    ⑴简单认识类:类就是用来对一个实体(对象)来进行描述的主要描述该实体(对象)具有哪些属性(外观,尺寸等)也就是成员变量哪些功能(用来干啥)也就是成员方法,描述完后计算机就可以识别了就是可以New一个对象啦)。 

    ⑵类的定义格式:java中定义类时需要用到class关键字;class为定义类的关键字class Name为类的名字,{} 中为类的主体;

 ◮注意:

      类名注意采用大驼峰定义!

      此处写的方法不带static关键字;后面解释!

    ✍练习:

                   ➷定义一个狗类;

                   ➷定义一个学生类;

Dog 类 代码演示:

class Dog  {
    // 字段(属性)或者 成员变量
    public  String name ;
    public  String color;
    // 行为或者成员方法
    public void barks() {
        System.out.println(name+":旺旺旺~~~");
    }
    public void wag() {
        System.out.println(name+":摇尾巴~~~");
    }
    public void show() {
        System.out.println("名字: "+name + "  颜色: "+color);
    }

 }

public class HolidayDemo14 {
    public static void main(String[] args) {
        //实例化对象
        Dog baby = new Dog();
        baby.name = "小哥";
        baby.color = "黑色";
        baby.show();
        baby.barks();
        baby.wag();

    }
 }

Dog类代码运行结果:

学生类--代码演示:

class Xstudent{
    //成员变量
    public String name;
    public int age ;
    public double score;
    //成员方法
    public void  DoClass() {
        System.out.println(name+"正在学习");
    }
    public  void Exam() {
        System.out.println(name+"正在考试");
    }
    public void Show() {
        System.out.println("姓名:"+name+"  年龄:"+age+"  分数:"+score);
    }

}

public class HolidayDemo14{
    public static void main(String[] args) {
    Xstudent student = new Xstudent();
    student.name = "圣瞳";
    student.age = 20;
    student.score = 99.99;
    student.DoClass();
    student.Exam();
    student.Show();

    }
}

学生类代码运行结果:

注意:

     ☯一般一个文件中只定义一个类

     ☯main 方法所在的类一般要使用public修饰

     ☯不要轻易修改public修饰的名称

3.类的实例化

⑴什么是实例化:用类类型创建(或者用new实例化)对象的过程,称为类的实例化

注意:

     ☯new关键字用于创建一个对象的实例

     ☯使用 “ . ” 来访问对象中的属性和方法

     ☯同一个类可以创建多个实例

类和对象的说明

   ①类只是一个模型

   ②类是一种自定义的类型

   ③一个类可以实例化多个对象,实例化出的对象,占用实际的物理空间,存储类成员变量

   ④比如:类实例化出对象就像现实中使用建筑设计图造出房子,类就像是设计图

4.this 引用▲(差个代码演示)

    ⑴什么是this引用:java编译器给每个“成员方法”增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有变量的操作,都是通过该引用去访问。(不用用户传递,编译器自动完成)

    ⑵this引用的特性:

        ①this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型

        ②this只能在“成员方法”中使用

        ③在“成员方法中” this只能引用当前对象,不能再一引用其他对象具有file属性

        ④this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责调用成员方法对象的引用传递给成员方法,this来接收

ி带有this的代码(不懂可问-实在很难写出来思想路线):


class Cat2{
    //成员变量
    public String name;
    public int age;
    public  String color;
    //成员方法
    public Cat2(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }

    public void eat() {
        System.out.println(this.name+"正在吃饭!");
    }

    public void sleep() {
        System.out.println(this.name+" 正在睡觉!");
    }

    /**
     * 打印我们的属性
     */
    public void show() {
        System.out.println("姓名:"+this.name+" 年龄:"+this.age+" 颜色:"+this.color);
    }

    /**
     *
     * @return
     */
    @Override
    public String toString() {
        return "Cat{" +
                "姓名='" + name + '\'' +
                ", 年龄=" + age +
                ", 颜色='" + color + '\'' +
                '}';
       
    }

}

public class HolidayDemo15{
    public static void main(String[] args) {
        Cat2 cat = new Cat2("xiaobo",22,"black");
        System.out.println(cat.toString());
        cat.eat();
        cat.sleep();
    }

5.对象的构造及初始化

    ⑴如何初始化对象:通过构造方法,默认初始化,就地初始化(不推荐)

    ⑵构造方法:名字必须与类名相同,在创建对象时,编译器自动调用这个方法并在整个对象的生命周期类只调用一次

    ⑶构造方法的特性:

         ①名字必须与类名相同

         ②没有返回值类型,设置为void也不行

         ③创建对象时由编译器自动调用,并且在对象的生命周期类只调用一次

         ④构造方法可以重载(名字相同, 参数列表不同,因此构成了方法重载

         ⑤如果用户没有显示定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的 

         ⑥绝大多数使用public来修饰,特殊场景会被private修饰

注意:

     ☯一旦用户定义,则编译器不再生成

     ☯this (...)必须是构造方法中第一句

     ☯不能成环


个谱

   构造方法 是没有返回值的方法,方法和类名是一样的

   构造方法 不只一个,可以有多个,多个构造方法之间构成了重载

   ㉿当我们写了一个类之后,没有写构造方法的时候,编译器会帮我们默认生成一个不带参数的构         造方法

   ㉿当我们写了任何一个构造方法之后,编译器不再为我们提供不带参数的构造方法

   ㉿一个类 至少会有一个构造方法就算你没写!!!

   ㉿构造方法 本质就是来实例化对象的时候调用(❶.分配内存 ,❷调用合适的构造方法)

   ㉿this可以用来调用本类中 其他的构造方法【构造方法当中使用】,必须放到第一行!!!所           以,只能在当前构造方法之中调用一个

   ㉿this的用法:❶this.date 访问属性 ❷this.func() 访问方法 ❸this() 调用本类中其他的             构构造方法

   ㉿this不能形成环  

ிl便看看代码悟一悟吧

class Student1 {
    //属性:成员变量-》类的内部  方法的外部的
    public String name;
    public int age;
    public double score;
    public String sex;


    public Student1() {
        //调用本类中   带有2个参数的构造方法,第一个参数的类型是String,第2个参数的类型是int
        this("圣瞳", 20);
        System.out.println("这个是不带参数的构造方法!");
    }

    public Student1(String name, int age) {
        //this();
        this.age = age;
        this.name = name;
        System.out.println("这个是带2个参数的构造方法!");
    }
    public void show() {
        System.out.println("姓名: "+this.name+"  年龄"+this.age);
    }

    public static class HolidayDemo15 {
        public static void main(String[] args) {
            Student1 student = new Student1();
            student.show();
        }
    }
}

代码结果:

个人所得【牢记使用构造方法与不使用构造方法的区别点(new的时候)

✈使用构造方法的时候

 ✈不使用构造方法时的new以及赋值问题

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到