Java基础-类与对象

目录

第8章 类与对象

1.类与对象的概述

1.1类的编写

1.2对象的创建和使用

1.3类与对象的进阶

2.成员变量与局部变量

3.构造方法

3.1构造方法的特点

3.2方法重载的特点


Java基础-类与对象

1.类与对象的概述

类可以看作是一个模板,是一个抽象的概念。类是由N多个对象抽取出来的具有某类对象的共同的特征和方法的组合体。而对象是一个具体的实例,是客观存在的。

类和对象的关系是:

(1)类是抽象的,是对象的类型;

(2)对象是具体的,是类的具体的实例。

那么先有类还是先有对象呢? 在现实生活中:由N多个对象抽取出像的部分,归纳为类,再由类的特征去认识其他的对象是否属于这个类别。 在编程开发中:先编写类,再由类去创建对象。

1.1类的编写

在Java中编写类的步骤分三步

(1)编写类名,类名要起的有意义,遵循每个单词的首写字母都大写的原则

(2)编写属性,类的属性在起名字的时候,要使用名词,类的属性也称成员变量,遵循变量的命名规则即可

(3)编写方法,对象所具有的行为,遵循方法的定义规则,方法名称遵循变量的命名规则。

【实例1】编写Person类

public class Person {
    String name;//姓名
    int age;//年龄
    String sex;//性别
​
    public void introduce(){
        System.out.println("姓名:"+name+"\t年龄:"+age+"\t性别:"+"sex");
    }
}

1.2对象的创建和使用

对象的创建和使用也分三个步骤:

(1)对象的创建,语法格式为:类名 对象名=new 类名();

(2)为对象的属性赋值,语法格式为:对象名.属性名=值;

(3)调用对象的方法,语法格式为:对象名.方法名(参数列表);

【实例2】对象的创建和使用

    @Test
    public void onePersonTest() {
        //1.想使用一个类,必须创建类的对象
        Person person=new Person();
        //2.对象名.属性
        person.name="张三";
        person.age=20;
        person.sex="男";
        //3.对象.方法名
        person.introduce();
    }

tuxaing

 

1.3类与对象的进阶

类是模板,通过一个模板可以创建N个对象

【实例3】创建多个对象

@Test
public void twoPersonTest() {
    //1.想使用一个类,必须创建类的对象
     Person person1=new Person();
     //2.对象名.属性
     person1.name="张三";
     person1.age=20;
     person1.sex="男";
     //3.对象.方法名
     person1.introduce();
     //1.想使用一个类,必须创建类的对象
     Person person2=new Person();
     //2.对象名.属性
     person2.name="李四";
     person2.age=23;
     person2.sex="女";
     //3.对象.方法名
     person2.introduce();
}

 

4.jpg

内存分析图如下:

1.jpg

 

(1)每个对象的属性是独立的,方法是共享的

(2)栈内存存储基本数据类型的值和引用数据类型的地址。

(3)堆内存存储new出来的对象,即引用数据类型的具体属性值

(4)栈内存存储局部变量,堆内存存储成员变量

2.成员变量与局部变量

成员变量与局部变量的区别有以下几点:

(1)声明的位置不同。 成员变量:类中,即类的属性; 局部变量:方法中、代码块中、方法的形式参数等。

(2)初始值不同。 成员变量:有默认的初始值,所有的引用数据类型默认值是nul,基本数据类型int的 默认值是0, double类型的默认值是0.0, boolean类型的默认值是 false 局部变量:必须赋初始值才能使用,否则出现“变量尚未初始化”的错误。

(3)优先级不同。 当成员变量与局部变量名称相同时,局部变量更具有优先级

【实例4】成员变量与局部变量的优先级

public class Demo {
    int number=20;//成员变量
    public void show(){
        int number=10;//局部变量
        System.out.println("number="+number);
    }
    public void show2() {
        int number=20000;//局部变量
        System.out.println("number="+number);
    }
    public static void main(String[] args) {
        Demo demo=new Demo();
        demo.show();
        demo.show2();
    }
}

 

2.jpg

3.构造方法

当系统提供的构造方法不能满足只是创建对象的需求时,就可以人为地去编写构造方法。

3.1构造方法的特点

(1)方法的名称与类名相同;

(2)没有任何的返回值,也不可以写void。

构造方法也是方法,既然是方法就可以重载

3.2方法重载的特点

(1)在同一个类中

(2)方法的名称相同;

(3)参数的类型、个数、顺序相同;

(4)与访问权限和返回值类型无关。

【实例5】构造方法的重载

public class Person2 {
    String name;//姓名
    int age;//年龄
    String sex;//性别
    //无参
    public Person2() {
        super();
    }
​
    //1个参数
    public Person2(String name) {
        super();
        this.name = name;
    }
​
    //3个参数
    public Person2(String name, int age, String sex) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
​
    //输出方法
    public void introduce(){
        System.out.println("姓名:"+name+"\t年龄:"+age+"\t性别:"+sex);
    }
}

【实例6】调用构造方法创建对象

//测试构造方法
@Test
public void constructorTest() {
    //调用无参构造方法创建对象p1
    Person2 p1=new Person2();
    p1.introduce();
    //调用一个参数构造方法创建对象p2
    Person2 p2=new Person2("谢大脚");
    p2.introduce();
    //调用三个参数构造方法创建对象p3
    Person2 p3=new Person2("刘能儿",45,"男");
    p3.introduce();
}

 

5.jpg

【实例7】匿名对象

//测试匿名对象
@Test
    public void AnonymousTest() {
    //创建对象并调用方法,而且方法只能调用一次
    new Person2("刘能儿",45,"男").introduce();
    //创建对象并给属性赋值
    new Person2().name="谢大脚";
}

6.jpg

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值