您的位置 首页 java

java零基础自学教程(四)对象和类(下)

一、getter方法与setter方法

声明为私有访问类型(private)的变量,只能通过类中公共的getter或setter方法被外部类访问

getter和setter方法主要用来隐藏类的实现细节和保护类的数据

对于每个变量,get方法返回其值,set方法设置其值

getter方法以get开头,setter方法以set开头,后边跟着变量名(此时的变量名的首字母要大写)

public class Dog{

private String color;

public String getColor(){

return color; } //get方法返回color的值

public void setColor(String c){

this.color=c; } // set方法接收一个参数并将其赋值给当前对象的color属性

}

●关键字this用于引用当前对象. this.color是当前对象的颜色属性

●一旦getter和setter方法被定义了,我们就可以在main方法中使用它们

public static void main(String[] args){

Dog d1=new Dog();

d1.setColor(“white”);

System .out.println(d1.getColor()); } //输出”white”

●getter和setter方法允许我们控制这些值.例如,你可以在实际设置该值之前,在设置器中验证给定的值.

●getter和setter方法是封装的基本构建块.我们将在后边介绍封装.

构造函数

构造函数是创建对象时调用的特殊方法,用于初始化对象

可以使用构造函数为对象提供初始值

注意:构造函数名称必须与类名相同.

构造函数不能有明确的返回类型.

public class Dog{

private String color;

Dog(){

color=”white”; }

} // Dog()方法是类的构造函数,所以无论何时创建该类的对象,color属性都将设置为”white”

●构造函数也可以带参数初始化属性

public class Dog{

private String color;

Dog(String c){

color=c; }

}

●使用new关键字创建对象时,会调用构造函数

public class MyJavaClass{

public static void main(String[] args){

Dog d=new Dog(“Yellow”); } //调用带参数的构造函数

}

●一个类可以有多个构造函数,它们具有不同数量的参数.

构造函数中的setter方法可以用来设置属性值

public class Dog{

private String color;

Dog(){

this.setColor(“white”); }

Dog(String c){

this.setColor(c); }

public void setColor(String c){

this.color=c; }

}

上面的类有两个构造函数,一个没有参数,将color属性设置为默认值”white”,另一个构造函数接收一个参数将其赋值给属性

Dog d1=new Dog(); //颜色是white

Dog d2=new Dog(“Yellow”); //颜色是Yellow

注意:java会自动提供一个默认的构造函数,所以所有的类都有一个构造函数,无论是否有特殊的定义

三 基本类型和引用类型

值类型是基本类型,包括 byte , short ,int, long , float , double ,boolean,char

赋值给基本类型的值将存储在相应的存储器位置中

public class MyJavaClass{

public static void main(String[] args){

int x=10;

addTo(x);

System.out.println(x); }

static void addTo(int num){

num+=1; }

} // 输出10

因为addTo方法没有返回任何值,所以x的值没有改变,输出10

●参考类型即引用类型,将参考(或地址)存储到存储相应数据的存储器位置

当你使用构造函数创建对象时,你将创建一个引用类型

例如,我们要定义一个Student类:

public class MyJavaClass{

public static void main(String[] args){

Student j;

j=new Student(“Jing”);

j.setAge(18);

addTo(j);

System.out.println(j.getAge()); }

static void addTo(Student s){

s.setAge(s.getAge()+1); }

} // 输出19

addTo方法将Student对象作为参数,并将其属性值age增加1.

j是引用类型,因此该方法影响对象本身,并且可以更改其属性的实际值.

●数组,字符串也是引用数据类型

四 Math类

Math类,它为数学运算提供了预定义的方法,不需要创建Math类的对象就可以使用它。要访问它,只需要输入Math.相应的方法就可以

Math.abs()返回参数的绝对值.参数可以是 short,int,long,float,double,byte类型,值以int形式返回

int a=Math.abs(-6); // 6

Math.ceil()将一个数进行上舍入,返回值大于或等于给定的参数,值以double形式返回

double c=Math.ceil(23.45); //24.0 ceiling是天花板,上限的意思

Math.floor()将一个数进行下舍入,返回值小于或等于给定的参数,值以double形式返回

double f=Math.floor(4.35); //4.0 floor地板的意思

Math.max()用于返回两个参数中的最大值

Math.min()用于返回两个参数中的最小值

Math.pow()用于返回第一个参数的第二参数次方.值以double形式返回

double p=Math.pow(2,3); //8.0

Math类还提供其他方法:sqrt()求平方根,sin(),cos()等

static 修饰符

当你声明一个变量或方法为静态时,它属于这个类,而不是一个特定的实例.这意味着只有一个静态成员的实例存在,即使你创建了该类的多个对象,或者没有创建任何对象,它也将被所有对象共享可用

public class Counter{

public static int numCount=0;

Counter(){

numCount++;}

} //numCount将被该类的所有对象共享, static关键字声明独立于对象的 静态变量

我们可以在main中创建Counter类的对象,并访问静态变量

public class MyJavaClass{

public static void main(String[] args){

Counter c1=new Counter();

Counter c2=new Counter();

System.out.println(Counter.numCount); }

} // 输出2

每次创建Counter类的新对象时,构造函数Counter()都会被执行,创建两个对象,被执行两次,所以输出2

也可是使用该类的任何对象(c1.numCount/c2.numCount)来访问静态变量.它们的结果是一样的

■static关键字也可以用来声明独立于对象的 静态方法

public class Dog{

public static void barking(){

System.out.println(“Woof-Woof”); }

}

现在可以在不创建对象的情况下使用barking()方法:

public class MyJavaClass{

public static void main(String[] args){

Dog.barking(); }

Math类的那些方法就是静态方法,所以我们可以在不创建Math对象的情况下调用这些静态方法.

■main方法必须始终是静态的

六 final修饰符

使用final关键字标记一个变式常量,变式常量值能被赋值一次,赋值一次后就变为常量,不能被更改

final修饰符通常和static修饰符一起使用来创建类常量

class MyJavaClass{

public static final double PI =3.14; // 常量的标识符所有字母都要大写

public static void main(String[] args){

System.out.println(PI); }

}

PI现在是一个常量,任何为其赋值的尝试都会输出错误.

■方法和类也可以标记为final,这样做可以限制方法和类,使其不能被重写,并且不能使其成为子类

七 包(package)

java使用包这种机制是为了防止命名冲突,提供访问控制,用来搜索和定位类、接口、枚举和注释等

一个包可以定义为一组相互联系的类型(类、接口、枚举、注释),为这些类型提供访问保护和命名空间管理的功能。

假如新建一个包,名为jiketaotie

package jiketaotie;

我们需要导入包中的类:下边的例子显示如何使用jiketaotie包中的Cat类

import jiketaotie.Cat;

class MyJavaClass{

public static void main(String[] args){

Cat c1=new Cat();

c1.barking(); }

}

■当一个类被放入包中会发生两个主要结果.首先,包的名称将成为该类的名称的一部分(jiketaotie.Cat),其次,包的名称必须与相应的类文件所在目录的结构相匹配

可以使用通配符”*”导入包中的所有类.

import jiketaotie.*; //导入包中的所有类

文章来源:智云一二三科技

文章标题:java零基础自学教程(四)对象和类(下)

文章地址:https://www.zhihuclub.com/197055.shtml

关于作者: 智云科技

热门文章

网站地图