3.面向对象定义,构造器,static修饰符

面向对象,这个开发思路相对于另一个开发思路面向过程,其优点更多也更适合开发者的思想。但是并不代表面向对象就完全优于面向过程,存在就是合理是对的。今天学的主要是类和对象,以及构造器和static修饰符的初步理解运用。面向对象具体分成封装,继承,多态三种特征,具体解释会在后面的学习中看到。
面向对象里不得不说类和对象。类是具有相同特征(状态)和行为(功能)的对象抽象化起来就是类。因此,对象的抽象就是类,而类的具体化就是对象,也可以说是类的实例化则是对象,类实际上就是一种数据类型。
类的特性也是对象的状态,有成员变量进行描述。类的功能对象的行为,则是由方法来描述。可以看出,类其实是对象的一种模板,而对象则是根据模板上的基础特性和功能来进行的。
举例:我和你,和所有人都被成为人类,而人类中的个体又被称之为人,每个人都有相同的特征和行为,特征是都有名字,年龄,身高体重等等,相同的行为:用两只脚行走,用嘴巴说出语言和唱出歌曲,能够写字,会思考,上网等。由此可见,我即是一个对象,而我则是人这个类里的对象,而你和我一样也是这个个体里的对象,对象和对象之间可以从类中发现相同的特性和行为。

类的定义:[修饰符] class 类名


0~N个成员变量(也成为字段,一般不初始化也就是赋值,赋值会是另外一种情况,看后面讲解。)
0~N个方法(可用修饰符,也可不用,看具体使用对象的操作)

一般定义类使用名词,并且首字母大写,如果是多个单词组成则是驼峰表示法,即每个单词首字母大写。
对象的实例化即是为其创建一个对象。

class Person {
    String name;    //对象人的名称
    int age;    // 对象人的年龄
}
public class StaticDemo {  
    public static void main(String[] args) {
        System.out.println(new Person());   //这种直接new一个也可以,但是只会输出hashcode,一般适用于单例,以后会讲到。
        Person p1 = new Person(); //为person创建对象,new则是在内存里为其创建新的空间。new出来的对象即是实例化类
        p1.name = "晓白"; //定义对象的name状态
        p1.age = 19;// 定义age的状态

        System.out.println(p1.name+","+p1.age); //打印输出对象的状态 

     }
} 

对象的打印如果未赋值,则直接打印出该变量的默认值。直接实例化如上面直接new一个会只输出哈希值。对象的生命周期是在其被new出来后开始,其在内存空间里会一直存在,但是如果没有被变量所引用,则会被垃圾回收器GC来回收处理。其中的过程就是对象的生命周期。而匿名对象 new Person();只是在内存中开辟一个空间,没有把空间内的地址赋给任何变量。因为没有变量所以只能使用一次。一般将其作为方法的实际参数传递。不同类型的成员初始变量值如图。
图片
构造器:则是类似于方法但是又与方法又很大不同的功能行为。如:Person p1 = new Person(); 很像是在调用一个方法名称为Person的无参数方法。我们将这种特殊的方法成为构造器/构造函数。并且在我们运行Person类后并没有发现该方法,却又不会报错是因为编译器会在class文件内自动创建一个缺省(即是默认)的构造器。
构造器的作用:1):创建对象,并且必须和new一起使用。2):完成对象的初始化操作。
特点:1):构造器名称必须和当前所在的类的名字相同。是构造器所在的类而不是调用它所在的类。
2):进制定义返回类型,不要使用void作为返回类型。也不需要return语句,因为它本身是有返回值的,返回的是创建对象时的引用

class Person {
    String name;    //对象人的名称
    int age;    // 对象人的年龄
}

这里class文件里会自动创建一个名为Person( ){ }的缺省构造器。如果我们为它添加引入参数则不会再创建缺省构造器。如”Person(String a, int b ){ } 为此我们在创建对象时也要为对象写入实际参数并且与构造器的参数类型,个数相同。如:Person p1 = new Person(“晓白”,19);所以我们可以像方法一样创建多个构造器供对象使用.其差距在于下图。这里写图片描述
构造器的重载与方法的重载类似。两同一不同:同类名下名字相同,但是方法签名不同(即是参数类型,个数和排序不同)
static修饰符的作用:用来区别字段/成员,方法,内部类的代码是属于对象还是类本身。
static修饰符特点:
其所修饰的成员(方法和字段),随着类的加载而加载。即是JVM加载class文件后就存在于内存空间之中了。
也是优先于对象存在的,因为对象是我们之后才通过new来创建出来的。并且所修饰的成员被所有该类的对象共同使用和访问。
可以用该类的对象调用static修饰的成员,但是实际上class字节码文件中还是用的该类来调用。
在static方法中只能访问static的成员,否则报错。非static方法中,可以访问static成员也可以访问实例成员。
如果这个成员属于整个类,就直接用static修饰,被所有对象所共享。
在开发中,往往也把工具方法作为static修饰。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值