Java的类和对象

Java的类和对象,第1张

目录

一 引入

二 类

        1.了解   2.代码   3.静态成员变量  4.静态成员方法  5.封装private6.构造方法

三 对象

        1.创建与使用   2.内存图


一 引入:

面向过程:你要全程参与一件事 (目的,过程,结果)
面向对象:你只需要知道目的,中间过程有人帮你完成,你直接get结果(目的,结果)

就像em 写作业和抄作业 : 他们都需要你最后在自己的本子上写满,但是 写作业自己写自己思考,抄作业直接抄就完事了。(嘿嘿嘿,是不是很形象)

创建的类 就是帮助你 完成中间过程的 具体方法
之后,你 把类实例化 get 一个具体的对象 就可以用 你具体的对象 去利用抽象的类 让他来帮你实现中间的过程

来我还有张图图:

二 类:

1.那让我们了解一下类~

//创建类
class (大驼峰){
    field; //成员属性   字段->属性->成员变量-> 类的内部 方法的外部
    method; //成员方法
}

class为定义类的关键字
class-name为类的名字
{}中为类的主体

类中的元素称为:成员属性
类中的函数称为:成员方法

2.代码

这样看还是很抽象——拿来一个例子让你康康!

class Person{
    public String name;
    public int age;

    public void eat(){
        System.out.println(name+" 可以自己吃饭啦!");
    }
    public void sleep(){
        System.out.println(name+age+" 睡觉觉~");
    }
}

三 对象

1.创建与使用:

我们刚刚学会了创建类,那我们该怎么使用它?——我们需要new一个对象!!!

//实例化对象
 <对象名> = new ();

new 关键字用于创建一个对象的实例
使用 . 来访问对象中的属性和方法
同一个类可创建多个对象
class Person{
    public String name;
    public int age;
    static int count;

    public void eat(){
        System.out.println(name+" 可以自己吃饭啦!");
    }
    public void sleep(){
        System.out.println(name+age+" 睡觉觉~");
    }
}

public class Text {
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.name = "heihei";
        person1.age = 3;
        person1.eat();
        person1.sleep();
    }
}

 嘿嘿嘿!没错 是不是很简单 那我接下来带你康康这个代码的在栈区 堆区开辟的空间图~

2.内存图

 哇呜哇呜!!是不是有人看到了不懂的东西?public static int count?那我们回到二类 说说

二 类

3.静态成员变量~  其实成员变量分为:普通成员变量,静态成员变量

        普通成员变量-依赖对象-可以new多个变量

        静态成员变量-不依赖对象-只存一份,用类访问(看图~)

 

 4.静态成员方法~  其实成员方法分为:普通成员方法,静态成员方法

 从3,4我们不难看出所有被static所修饰的方法或者属性,全部不依赖于对象

好 我们先简单小结一下

1.引用不都在栈上

2.Person person = null; 这个引用 不指向任何对象

3.Person person1 = new Person();
  Person person2 = person1;         person2这个引用指向person这个引用所指向的对象

4.一个引用不可以同时指向多个对象
  Person person = new Person();
  person = new Person();

5.普通方法的内部,不能定义静态的变量——static定义的变量-类变量-属于类-不需要对应的引用调用
                                   普通方法调用-需要对应引用调用

6.静态成员变量,不可以在方法里定义

7.普通方法可以调用静态方法(反之不行,没有对象)

5.封装private

好了下面我要搞事情~

 我心情好~我给这些成员变量 换个名~好家伙 利用我创造的类的人 可能心情不是很好了~~~看到了吗一堆的警告~啊我有理由怀疑他在骂我——我打了个喷嚏

 那我们为了防止这样心情突然好(啊就是想搞事情的人)用private~封装

~~被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用. ~~被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用

 哎哎哎,别着急敲代码 其实接口 可以让编译器帮我们搞!

 这就欧克了!

但是还有点小问题 我们仔细康康一编译器帮忙生成的代码

 有this这有什么用???那看代码

class Person {
    private String name;

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

    public void eat() {
        System.out.println(name + " 可以自己吃饭啦!");
    }
}

public class Text {
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.setName("lalala");
        System.out.println(person1.getName());
    }
}

 哎 根本没赋值! 因为name = name 局部变量优先使用了,同一个name

所以建议一般都加上this(不加不一定错,加上一定不错!)

6.构造方法:

        介绍一下:方法名和类名是相同的,且构造方法比较特殊,没有返回值

        什么作用?一个对象的产生(对象的实例化)——为对象分配内存

                                                                                ——调用合适的构造方法

注意:

1.如果没实现任何的构造方法,编译器会帮我们,默认生成一个不带参数的构造方法————简单来说,一个类至少会有一个构造方法,就算你没写

2.如果当前类有其他的构造方法,那么编译器不会帮我们生成不带参数的构造方法

3.构造方法之间可以构成——重载
class Person {
    private String name;

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

    public void eat() {
        System.out.println(name + " 可以自己吃饭啦!");
    }

    public Person(){
        System.out.println("Person::不带参数的构造方法");
    }
    public Person(String name){
        this.name = name;                              //this.对当前对象的引用
                                                        只能存放在构造方法中,必须放在第一行
        System.out.println("Person::带一个参数的构造方法");
    }


}

public class Text {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person("lalala");
    }
}

 

 

好了!差不多总的来说 就这些嘿嘿~~我就知道你们可能有点懵 我搞了一张大纲图 你们康康~~

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/904401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存