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 | 修饰类,成员。局部变量 |
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不能和final、private、static联合使用,只能单独使用abstract或者联合public abstract使用。
- 抽象类方法在子类中必须被实现,否则子类仍然是abstract的。
如果给此下文代码中的抽象类Person1实例化一个对象的时候,会发现编译报错,说明抽象类不能实例化对象。
抽象类就是用来被继承的,子类可以是抽象类,也可以是非抽象类。
同学们,Java中类这一节的内容有点难理解,一定要多下功夫,才能摸透这其中的点点滴滴。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
本文标题:Java中的类基础详解-创新互联
当前链接:http://azwzsj.com/article/edchp.html