Java是一门面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都通过对象来处理。
对象的创建
每实例化一个对象就会自动调用一个构造方法,实质上这个过程就是创建对象的过程。语法如下:
Test test = new Test();
Test test = new Test("a");
表7.2 创建对象语法中的参数说明
设置值 |
描述 |
Test |
类名 |
test |
创建Test类对象 |
new |
创建对象操作符 |
"a" |
构造方法的参数 |
例题
创建类CreateObject.
public class CreateObject {
public CreateObject() { //构造方法
System.out.println("创建对象");
}
public static void main(String[] args) {
new CreateObject(); //创建对象
}
}
创建对象
访问对象的属性和行为
例题
创建类TransferProperty
public class TransferProperty {
int i = 47; //定义成员变量
public void call() { //定义成员方法
System.out.println("调用call()方法");
for(i = 0; i < 3; i++) {
System.out.print(i+" ");
if(i == 2) {
System.out.print("\n");
}
}
}
public TransferProperty() { //定义构造方法
}
public static void main(String[] args) {
TransferProperty t1 = new TransferProperty(); //创建一个对象
TransferProperty t2 = new TransferProperty(); //创建另一个对象
t2.i = 60; //将类成员变量赋值为60
//使用第一个对象调用类成员变量
System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
t1.call();//使用第一个对象调用类成员方法
//使用第二个对象调用类成员变量
System.out.println("第二个实例对象调用变量i的结果:"+t2.i++);
t2.call();//使用第二个对象调用类成员方法
}
}
第一个实例对象调用变量i的结果:47
调用call()方法
0 1 2
第二个实例对象调用变量i的结果:60
调用call()方法
0 1 2
例题
创建类AccessProperty
public class AccessProperty {
static int i = 47; //定义静态成员变量
public void call() { //定义成员方法
System.out.println("调用call()方法");
for(i=0;i<3;i++) {
System.out.print(i+" ");
if(i==2) {
System.out.print("\n");
}
}
}
public AccessProperty() { //定义构造方法
}
public static void main(String[] args) {
AccessProperty t1 = new AccessProperty(); //创建一个对象
AccessProperty t2 = new AccessProperty(); //创建另一个对象
t2.i = 60; //将类成员变量赋值为60
//使用第一个对象调用类成员变量
System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
t1.call();//使用第一个对象调用类成员方法
//使用第二个对象调用类成员变量
System.out.println("第二个实例对象调用变量i的结果:"+t2.i);
t2.call();//使用第二个对象调用类成员方法
}
}
第一个实例对象调用变量i的结果:60
调用call()方法
0 1 2
第二个实例对象调用变量i的结果:3
调用call()方法
0 1 2
对象的引用
语法
类名 对象引用名称
对象的比较
例题
创建类Compare
public class Compare {
public static void main(String[] args) {
String c1 = new String("abc"); //创建两个String型对象引用
String c2 = new String("abc");
String c3 = c1; //将c1对象引用赋予c3
//使用“==”运算符比较c2和c3
System.out.println("c2==c3的运算结果为:"+(c2==c3));
//使用equals()方法比较c2与c3
System.out.println("c2.equals(c3)的运算结果为:"+(c2.equals(c3)));
}
}
c2==c3的运算结果为:false
c2.equals(c3)的运算结果为:true
对象的销毁
每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址需要被回收。
实践与练习
尝试编写一个类定义一个修饰权限为private的成员变量,并定义两个成员方法,一个成员方法实现为此成员变量赋值,另一个成员方法获取这个成员变量的值,保证其他类继承该类时能获取该类的成员变量的值。
创建类User1
public class User1 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建测试Usertest
public class Usertest extends User1{
public static void main(String[] args) {
User1 u=new User1();
u.setName("123");
System.out.println(u.getName());
}
}
123
尝试编写一个矩形类,将长与宽作为矩形类的属性,在构造方法中将长、宽初始化,定义一个成员方法求此矩形的面积。
public class User2 {
private float height;
private float width;
public User2(float height,float width){
this.height=height;
this.width=width;
}
public float square(){
return height*width;
}
public static void main(String args[]){
User2 u=new User2(3.5f,4.5f);
System.out.println(u.square());
}
}
根据运行参数的个数决定打印变量i值的次数。
public class User3 {
public static void main(String[] args) {
int lengh = args.length;
if (lengh == 0) {
System.out.println("无运行参数");
} else {
for (int i = 1; i <= args.length; i++) {
System.out.println(i);
}
}
}
}
网友评论