码迷,mamicode.com
首页 > 其他好文 > 详细

类和对象

时间:2020-01-07 20:01:21      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:事物   大小写   编写   编译器   对象   隐藏   对象类型   区分   王思聪   

 1.类和对象

类:是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类的属性和行为。

类的定义:

public class 类名{

  成员变量;(属性)

  成员方法;(行为)

}

2.对象的创建即使用

一个类并不能直接使用,需要根据类创建一个对象才能使用。

1.导包:指出需要使用的类在什么位置;  格式:import 包名称.类名称 ; 对于和当前类属于同一个包的情况,可以省略导包语句不写。

2.创建: 格式 : 类名称  对象名 = new 类名称();  如 Student stu = new Student();

3.使用:分两种情况

使用成员变量:对象名.成员变量名

使用成员方法:对象名.成员方法名(参数)

如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。

练习1.    定义一个类,用来模拟手机事物

public class Phone {
    String brand;
    double price;
    String color;

    public void call(String who){
        System.out.println("给"+who+"打电话");
    }
    public void sendMessage(){
        System.out.println("群发短信");
    }
}
public class Demo01PhoneOne {
    public static void main(String[] args) {
        Phone one = new Phone();
        System.out.println(one.brand);
        System.out.println(one.color);
        System.out.println(one.price);
        System.out.println("=================");
        one.brand = "苹果";
        one.price = 5999;
        one.color = "黑色";
        System.out.println(one.brand);
        System.out.println(one.color);
        System.out.println(one.price);
        one.call("乔布斯");
        one.sendMessage();
    }
}

3.一个对象的内存图

成员变量根据红色直接找到

成员方法2步,先根据红色,再根据绿色

技术图片

 

 4.两个对象使用同一个方法的内存图

两个对象  井水不犯河水

技术图片

 

 5.两个两个引用指向同一个对象的内存图

技术图片

 

 6.使用对象类型作为方法的参数类型

技术图片

 

 7.使用对象类型作为方法的返回值

技术图片

 

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

1.定义的位置不一样:

  局部变量:方法的内部,

  成员变量:方法的外部,直接写在类当中;

2.作用范围不一样:

  局部变量:只有方法当中才可以使用,出了方法就不能使用,

  成员变量:整个类都可以通用;

3.默认值不一样:

  局部变量:没有默认值,如果要使用,必须手动进行赋值,

  成员变量:如果没有赋值,会有默认值,规则和数组一样;

4.内存的位置不一样:

  局部变量:栈

  成员变量:堆

5.生命周期不一样:

  局部变量:随着方法进栈而诞生,随着方法出栈而消失,

  成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失。

为什么参数就能直接打印?       因为参数在方法调用的时候必然会被赋值

技术图片

9.封装性

封装就是将一些细节隐藏起来,对于外界不可见

  1.方法就是一种封装

  2.关键字private也是一种封装

10.private关键字的作用及使用

一旦使用了private进行修饰,那么本类当中仍可以随意访问,但是超出本类之外就不可以直接访问了。

那么怎样访问?

间接访问,private成员变量,就定义一对get、set方法

private int age;
    //这个成员方法专门用于向age设置数值
    public void setAge(int num){
        age = num;
    }
    //这个成员方法专门用于获取age的数值
    public int getAge() {
        return age;
    }

对于get来说,不能有参数,返回值类型和成员变量对应;

对于set来说,不能有返回值,参数类型和成员变量对应。

11.this关键字

当方法的局部变量和成员变量重名的时候,根据“就近原则”,优先使用局部变量。

this.成员变量

this可以解决重名区分不开的问题。

通过谁调用的方法,谁就是this。

public class Person {
    String name;
    //who是对方的名字,成员变量name是自己的名字
    public void sayHello(String name){
        System.out.println(name+"你好,我是"+ this.name);
        System.out.println(this);
    }
}
public class Demo01Person {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "王健林";
        person.sayHello("王思聪");   //通过person调用,那么person就是this
        System.out.println(person);
    }
}

技术图片

 

 12.构造方法

构造方法就是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。

【注意】

1.构造方法的名称必须和所在类名称完全一样,就连大小写也要一样(普通方法首字母要小写);

2.构造方法不要写返回值类型,连void也不要;

3.构造方法不能return一个具体返回值;

4.如果没有编写任何构造方法,那么编译器会默认一个构造方法,没有参数、方法体,什么事情都不做;

5.一旦编写了至少一个构造方法,那么编译器将不再赠送;

6.构造方法也是可以重载的。

格式:

public 类名称(参数类型  参数名称){

  方法体;

}

调用:new对象就是在调用构造方法

13.定义一个标准的类

【满足以下要求】

1.所有的成员变量都要使用private关键字修饰;

2.为每一个成员变量编写一对get、set方法;

3.编写一个无参的构造方法;

4.编写一个全参的构造方法。

这样标准的类也叫Java Bean

快捷键:alt+insert 或者 code->Generate.

类和对象

标签:事物   大小写   编写   编译器   对象   隐藏   对象类型   区分   王思聪   

原文地址:https://www.cnblogs.com/jian2818/p/12162429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!