Java的类与对象

一、类

定义:

对于一类事物的抽象描述

注意:

使用class修饰  一个文件中只允许有一个public(权限修饰符)修饰的类

类的描述:

属性:一般都是用 名词来修饰
行为:一般都是用 动词来修饰

成员书写:

成员变量(实例变量)写在 类中 方法外
成员方法(实例方法)写在 类中

成员变量和局部变量的区别:

1.书写位置
  成员变量:类中 方法外
  局部变量:方法内 或 方法声明中
2.内存中的位置
  成员变量:存在于堆内存中
  局部变量:加载到栈内存中
3.初值
  成员变量:有默认初始值(堆给的)
  局部变量:没有默认值 如果要使用的话 必须要给初值
4.生命周期
  成员变量:随着对象的创建而创建 随着对象的销毁而销毁
  局部变量:随着方法存在

二、 对象:

定义:

用类 实例出来的具体事物

书写:

类名 对象名 = new 类名();(引用数据类型)

举例一:

创建Animal类:

//  动物类 姓名 年龄 性别 会介绍自己
//  思考 如果在类中声明成员变量 没有给初值 那么有初值吗? 
//  有 因为对象创建在堆内存(堆内存有默认的初始值)
class Animal {
    //  成员变量的作用域 整个类中都可以访问到
    String name = "旺财";  //  姓名
    int age = 2;      //  年龄
    String gender = "公";//  性别
    //  成员方法
    public void sayHi() {
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("性别:" + gender);
    }
    //  睡觉
    public void sleep() {
        System.out.println(name + " 在睡觉");
    }
    //  吃饭
    public void eat() {
        System.out.println(name + " 在吃饭");
    }
}

main中函数调用:

public static void main(String[] args) {
    //  创建一个对象
    Animal dog = new Animal();
    //  如何访问成员变量?   对象点成员变量
    //  如果成员变量在等号前面 叫赋值
    //  在等号后面 叫获取
    //  给成员变量 赋值
    dog.name = "来福";
    //  获取成员变量
    String stringName = dog.name;
    System.out.println(stringName);
    //  如何调用成员方法?   对象点方法
    dog.sayHi();
    dog.eat();
    dog.sleep();        
}

这里写图片描述

举例二:

创建Car类:

class Car {
    String name;    //  牌子
    String color;   //  颜色  
    int tireNum; //  轮胎个数

    //  会动
    public void run(int i) {
        //  局部变量
        //  声明的位置:方法中 或者 方法声明上(参数位置)
        int num = 10;
        System.out.println(num);
        System.out.println("我会动");
    }

    //  会撞人
    public void hitMan() {
        System.out.println("会撞人");
    }

    //  介绍
    public void sayHi() {
        System.out.println("牌子:" + name);
        System.out.println("颜色:" + color);      
        System.out.println("轮胎个数:" + tireNum);
    }
}

main中函数调用:

public static void main(String[] args) {
    //  创建 红色 法拉利 5个轮子
    Car car = new Car();
    car.name = "法拉利";
    car.color = "红色";       
    car.tireNum = 5;
    car.sayHi();
}

匿名对象:

定义:
没有名字的对象
1.如果你只调用方法的话 这是可以使用匿名对象(测试的时候会用 测试方法能不能成功会用)
2.可以当做参数进行传递

好处:当参数时 代码简便
弊端:无法直接修改里面的值

举例三:

创建Person类:

class Person {
    String name = "王龙";
    int age = 16;

    public void sayHi() {
        System.out.println(name + " " + age);
    }
}

main中函数调用:

new Person().sayHi();
new Person().name = "水";
new Person().sayHi();

面向对象:

特征:

1.封装
2.继承
3.多态

封装:

定义:

将类中属性或方法对外界隐藏 然后提供公共的访问方式

体现:

成员变量私有化

私有(权限修饰符)private

java bean实体类规范:

1.成员变量私有化(并且提供set/get方法)

举例四:

创建Student 并封装

class Student {
    //  成员变量私有化(只能本类进行访问 本类以外无法访问)
    //  不能通过对象点属性来直接访问 但是可以通过方法来间接访问
    private String name;
    private int age;

    //  get/set 方法
    //  命名规范 以set或者get开头 小驼峰
    //  获取
    public String getName() {
        return this.name;
    }   
    //  修改
    public void setName(String name) {
        //  提供关键字 this 代表本类的对象
        //  那个对象调用这个方法 这个对象就是this
        this.name = name;
    }

    //  获取age
    public int getAge() {
        return this.age;
    }
    //  修改age
    public void setAge(int age) {
        this.age = age;
    }

    //  就近原则(这里会打印局部变量)
    public void sayHi() {
        String name = "猜猜我是谁?";
        System.out.println(name + " " + this.age);
    }
}

调用封装:

public static void main(String[] args) {
    Student student = new Student();
    //  使用set/get方法
    student.setName("贵水");
    student.setAge(21);
    System.out.println(student.getName() + " " + student.getAge());
    student.sayHi();
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值