Java中的类基础详解-创新互联

目录

10年积累的成都网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有罗平免费网站建设让你可以放心的选择与我们合作。

可以有多个类,但是只能由一个public类

类 = 字段 + 方法

类的构造

没写构造函数时

写构造函数时

构造函数中this的用法

1.this指当前这个对象本身

2.this解决局部变量和域同名的问题

3.通过this调用其他构造方法

类的修饰符和控制符

第一类:访问修饰符(private、default、protected、public)

第二类:其他修饰符和非访问修饰符(abstract、static、final)

static字段

final

abstract

可以有多个类,但是只能由一个public类

在每个.Java程序中,可以拥有多个类,但是public类有且只能拥有一个,且这个public类的名字必须与文件名相同。如图所示:

此时,程序没有出现编译报错,但是当我们改变一下类的名字,如图:

此时,程序编译报错,错误 原因为:Test类是public的,应该被声明在一个叫Test.java的文件中,即文件名与主类名不相同导致的。

接下来,我们来看一下一个.java文件可以存在多个类的情况:

class Person1{
    public String name = "张三";
    public int age = 20;

    public void print(){
        System.out.println("姓名:"+name+" 年龄:"+age);
    }
}
public class Main {
    public static void main(String[] args) {
        Person1 person1 = new Person1();
        person1.print();
    }
}

通过此代码,我们可以清楚的发现,在一个.java文件 中,出现了多个类(Person1和Main),再次强调一遍,一个.java文件中有且只能出现一个public类。

因为每个.java文件被执行的时候都会先执行public类,而且只执行public类中的代码,如果存在其他的类但是在public类中没有使用,就不会执行其他的类,但是这个类的写法必须正确,否则会编译报错;如果写了其他的类并在public类中使用了该类,那么也会执行其他类的相应代码。

而且除public类之外的其他类也可以写在public类之后,即使在主类中调用到该类。如图:

由图可以确定,定义的类可以放在public类之前和之后。

类 = 字段 + 方法

如图:

由图可见,此代码中的name和age都属于Person1中的字段,print()和eat()都属于Person1的方法

字段 是类的属性,用变量来表示

字段(filed),通常叫做”类成员“,或”类成员变量“,有时也叫”域“,理解为”数据成员“,用来承载数据。

方法 是类的操作和功能,是用函数来表示的。

类的构造

类的构造可以用来给一个类的数值赋一个初值,用来初始化一个该类的对象。构造函数与类名同名,且不需要写返回值。

没写构造函数时

如果当我们没有写构造函数时,那么程序会自动生成一个默认的构造函数,但是这个构造函数里面什么都没有,类似于空值,函数中没有任何的参数,也没有任何的语句,如图:

Person1(){}

如果没有写构造函数,我们初始化一个新的对象的时候,不需要写参数。如图:

此时初始化对象时,就不需要写参数。

写构造函数时

如果我们自己写了构造函数,那么程序就不会自动给我们生成默认的构造函数了,并且如果我们自己写的构造函数中有参数,我们在new一个对象时,要写入参数,否则会编译报错,如果自己写的构造函数中不含有参数,相应的,我们在new一个对象时也不用写参数。如图:

如果我们自己构造了函数,且函数中含有两个参数,但是我们在实例化对象时没有给出参数,此时就会出现如图所示的编译报错,如果我们加上两个对应类型的参数,程序就不会再编译报错,如图:

构造函数中this的用法 1.this指当前这个对象本身

例如,age和this.age是一样的,都能运行出相应的结果。

由运行结果所示,证实了上述说法。

2.this解决局部变量和域同名的问题

此时,我明明都已经new了一个新的对象,并且也传入了类型对应的参数,为什么打印的时候会是这样呢?这是因为构造Person1这个函数时的形参变量名和前面定义Person1这个类时的字段名相同了,那么,该如何解决呢?这时,this关键词也发挥作用了,如图:

3.通过this调用其他构造方法

在构造函数时,this可以调用另一种构造方法,,并且这条调用语句必须放在第一行。

类的修饰符和控制符

相关作用:可以修饰类,也可以修饰类中的成员(字段,方法)。

第一类:访问修饰符(private、default、protected、public)

修饰类

当前类

同包

子类

其他类

Private

Default

Protected

Public

这四类访问修饰符之间的关系如上图所示

如果不加修饰符,则默认为default修饰。

第二类:其他修饰符和非访问修饰符(abstract、static、final)

其他修饰符/非访问控制符

作用

Abstract

修饰类,成员

Static

修饰内部类,成员

Final

修饰类,成员。局部变量

static字段

1.静态字段最本质的特点是,他们是类的字段,不属于任何一个对象实例。

2.它不保存在某个对象实例的内存区间中,而是保存再类的内存区域的公共存储单元。

3.类中的static变量可以通过了类名直接访问,也可以通过对象实例来访问,两种方法的结果是相同的。因为这个static变量是存在最原本的类中的,它本身和用它来实例化的对象都可以访问。
例如System类的in和out对象,就是属于类的域,直接用类名来访问,即System.in和System.out 。


final
  • final类:如果一个类被final修饰符所修饰和限定,说明这个类不能被继承,即不会拥有子类
  • final方法:final修饰符所修饰的方法,是不能被子类所覆盖的方法。
  • final字段和final局部变量:它们的值一旦给定,就不能够更改。并且它们是只读量,它们能且只能被赋值一次。
  • 如果一个字段被static final所同时修饰,它可以表示一个常量。如果不给定初始值,则按默认值进行初始化(引用类型为null,数值类型为0,Boolean类型为false)。
abstract
  • abstract只能修饰类和方法,不能修饰变量。
  • 凡是用abstract修饰符修饰的类被称为抽象类。
  • 抽象类不能实例化,不能创建对象,设计抽象类就是用来被子类继承的。
  • abstract不能和final、private、static联合使用,只能单独使用abstract或者联合public abstract使用。
  • 抽象类方法在子类中必须被实现,否则子类仍然是abstract的。

如果给此下文代码中的抽象类Person1实例化一个对象的时候,会发现编译报错,说明抽象类不能实例化对象。 

抽象类就是用来被继承的,子类可以是抽象类,也可以是非抽象类。

同学们,Java中类这一节的内容有点难理解,一定要多下功夫,才能摸透这其中的点点滴滴。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:Java中的类基础详解-创新互联
文章链接:http://scyanting.com/article/edchp.html