类和对象

目录

基本概念

类的定义

类的权限修饰符

成员变量修饰符

对象的创建和使用

参数的传递

匿名对象

类的特性

私有成员和公共成员

方法的重载

构造方法

静态成员


基本概念

类:对某一类事物的描述,是抽象的,概念上的定义。

对象:是实际存在的属于该类事物的具体个体,也称为实例。

类是对象的模板、图纸,而对象是类的一个实例,是实实在在的个体,一个类可以创建出来多个对象。如果将现实中的汽车比作对象,那么创建该汽车的设计图就是类。

eg:简历

简历模板是一个类,将它打印或者是下载之后就相当于是创建了一个对象。

类的定义

由于类是将数据和方法封装在一起的一种数据结构,其中数据表示类的属性,方法表示类的行为,所以定义类实际上就是定义类的属性与方法

成员变量也叫域变量,全局变量,属性。

成员方法:方法。

class Student {
    private String name;//姓名
    private char sex;//性别
    private int age;//年龄
    private int no;//学号
    private String hobbit;//爱好



    public void sleep(){
        System.out.println("sleep...");
    }
    public void expense(){
        int eat=800,shopping=200;
        System.out.println("消费:"+(eat+shopping));
    }

    @Override
    public boolean equals(Object obj) {
        if(this==obj)
            return true;
        if(obj instanceof Student){
            Student student=(Student)obj;
            if(student.name.equals(this.name)&&student.no==this.no&&student.sex==this.sex){
                return true;
            }
        }
        return false;
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getHobbit() {
        return hobbit;
    }

    public void setHobbit(String hobbit) {
        this.hobbit = hobbit;
    }

    public Student() {
    }

    public Student(String name, char sex, int no) {
        this.name = name;
        this.sex = sex;
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

类的权限修饰符

成员变量修饰符

//用final定义常量

public static final double PI=3.14;

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

在类和方法中均可定义属于自己的变量。类中定义的变量是成员变量,而方法中定义的变量是局部变量。
(1)从语法形式上看,成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public、private、static等修饰符所修饰,而局部变量则不能被访问控制修饰符及static所修饰;成员变量和局部变量都可以被final所修饰。
(2)从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在于堆内存的,而局部变量是存在于栈内存的。
(3)从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。
(4)成员变量如果没有被赋初值,则会自动以类型的默认值赋值(有一种情况例外,被final修饰但没有被static修饰的成员变量必须显式地赋值);而局部变量则不会自动赋值,必须显式地赋值后才能使用。


对象的创建和使用

创建新的对象之后,就可以对对象的成员进行访问。通过对象来调用对象成员的格式如下:

     对象名.对象成员

Student student1 = new Student();
student1.sleep();

 

 

参数的传递

java的参数传递机制 :值传递

对于基本数据类型:方法中传进来的参数就是数据的值

对于引用数据类型:传入方法的是对象的地址值

匿名对象

当一个对象被创建之后,在调用该对象的方法时,也可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象称为匿名对象。

new Student().getAge();

使用匿名对象通常有如下两种情况。
(1)如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
(2)将匿名对象作为实参传递给一个方法调用。

类的特性

私有成员和公共成员

对于类中的属性为什么用private不用public?

当我们把属性的修饰符设置为public时,在类外我们可以使用引用变量.变量名的方式进行赋值,虽然更方便一点,但是也用弊端。比如

如果没有一个机制来限制对类中成员的访问,则很可能会造成错误的输入。为了防止这种情况的发生,Java语言提供了私有成员访问控制修饰符private。也就是说,如果在类的成员声明的前面加上修饰符private,则就无法从该类的外部访问到该类内部的成员,而只能被该类自身访问和修改,而不能被任何其他类(包括该类的子类)获取或引用,因此达到了对数据最高级别保护的目的。

既然属性用private修饰,在类外不能被直接访问,那该如何访问?创建公共成员。

既然在类的外部无法访问到类内部的私有成员,那么Java就必须提供另外的机制,使得私有成员得以通过这个机制来供外界访问。解决此问题的办法就是创建公共成员。为此,Java提供了公共访问控制符public。如果在类的成员声明的前面加上修饰符public,则表示该成员可以被所有其他的类所访问。

方法的重载

重载是指在同一个类内具有相同名称的多个方法,这多个同名方法如果参数个数不同,或者是参数个数相同但类型不同,则这些同名的方法就具有不同的功能。
注意:方法的重载中参数的类型是关键,仅仅是参数的变量名不同是不行的。也就是说参数的列表必须不同,即:或者参数个数不同,或者参数类型不同,或者参数的顺序不同
 

构造方法

构造方法(constructor)是一种特殊的方法,它是在对象被创建时初始化对象成员的方法。构造方法的名称必须与它所在的类名完全相同。构造方法没有返回值,但在定义构造方法时,构造方法名前不能用修饰符void来修饰,这是因为一个类的构造方法的返回值类型就是该类本身。构造方法定义后,创建对象时就会自动调用它,因此构造方法不需要在程序中直接调用,而是在对象创建时自动调用并执行。这一点不同于一般的方法,一般的方法在用到时才调用。

语法:public 类名(){}//无参构造

public 类名(参数列表){根据传传进来的参数赋初值}//有参构造

静态成员

既static修饰的成员,不用static修饰的成员都是实例成员。

静态成员的访问:类名.成员

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值