Java面向对象2
Java面向对象2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:MyEclipse 10 Java
作者:陈剑波
撰写时间:2019年05月09日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、Java中的对象
一、创建对象
对象是根据类创建的,Java语言中使用new操作符调用构造方法创建对象。
创建步骤:
声明:声明一个对象,包括对象名和对象类型。
实例化:使用关键字new来创建一个对象,只是为对象在内存中开辟空间。
初始化:使用new创建对象时,会调用构造方法初始化对象,对象中的值赋初始值。
语法格式:
类名 对象名=new 类名();
访问对象的属性和行为:
/* 访问类中的变量 */ |
objName.variableName; |
/* 访问类中的方法 */ |
objName.methodName(); |
|
示例代码:
public class SimplePerson { |
//定义构造方法 |
public SimplePerson() { |
|
} |
//定义成员变量 |
String name; |
int age; |
//定义成员方法 |
public void say(String text) { |
System.out.println(this.age + "岁的" + this.name+"说:\""+text+"\""); |
} |
} |
public class ClassDemo { |
public static void main(String[] args) { |
//创建一个对象 |
//声明一个SimplePerson类型的变量 |
SimplePerson simplePerson; |
//通过new关键字调用SimplePerson类的构造器,返冋一个SimplePerson实例 |
//将该SimplePerson实例赋给simplePerson |
simplePerson=new SimplePerson(); |
//创建另一个对象 |
//可以简写为 |
SimplePerson simplePerson2=new SimplePerson(); |
|
//使用第一个对象调用类成员方法 |
simplePerson.age=21; |
simplePerson.name="布罗利"; |
simplePerson.say("我看一遍就掌握了Java"); |
|
//使用第二个对象调用类成员方法 |
simplePerson2.age=21; |
simplePerson2.name="卡卡罗特"; |
simplePerson2.say("我早就学会了Java"); |
} |
}
运行结果: |
21岁的布罗利说:"我看一遍就掌握了Java" |
21岁的卡卡罗特说:"我早就学会了Java" |
2、构造器的重载
构造名必须与类名相同。
构造器的重载:形参列表不同,它们的参数的数量不同或数量相同而类型和次序不同。
示例代码:
public class Test { |
int age; |
String name; |
//构造器的重载:形参列表不同 |
//无参构造方法 |
public Test() { |
this.age=21; |
this.name="艾泽"; |
} |
//有参构造方法 |
public Test(int age) { |
this.age=age; |
this.name="艾泽"; |
} |
//有参构造方法 |
public Test(String name) { |
this.age=21; |
this.name=name; |
} |
//有参构造方法 |
public Test(int age,String name) { |
this.age=age; |
this.name=name; |
} |
//有参构造方法 |
public Test(String name,int age) { |
this.name=name; |
this.age=age; |
} |
} |
3、成员变量和局部变量
成员变量指的是类范围里定义的变量,也就是属性;局部变量指的是一个方法内定义的变量。命名规则是单词首字母小写,后面的每个单词首字母大写。
Java中变量的分类 :
成员变量:
成员变量被分为类变量和实例变量两种,定义一个变量是不使用static修饰的是实例变量,使用static修饰的是类变量。类变量,作为类的一个成员,与类共存亡。实例变量,作为实例的一个成员,与实例共存亡。
示例代码:
public class Person { |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//实例变量 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public String name; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//类变量 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public static int age; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
运行结果: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Person的age类字段(field)值:0 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p变量的name 字段(field)值是:null p对象的age 字段(field)值是:0 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p变量的name 字段(field)值是:布罗利 p对象的age 字段(field)值是:22 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Person的age类字段(field)值:22 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p变量的name 字段(field)值是:null |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p2对象的age类字段(field)值:22 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
局部变量:
根据定义形式的不同,分为三种:
形参:在定义方法签名时定义的变量,形参的作用域在整个方法内有效。
方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时消失。
代码块局部变量:在代码块中定义的局部变量,这个局部变量的作用域从定义变量的生效,到该代码快结束时失效。
示例代码:
public class Test2 { |
// 定义一个方法 |
public void test3() { |
// 在方法中定义一个局部变量a |
// int a; |
// 直接输出是输出不出来的,因为没有初始化 |
// System.out.println(i); |
// 定义一个局部变量a并初始化 |
int a = 20; |
// 输出a |
System.out.println(a); |
} |
|
// 定义一个静态的方法 |
public static void test4() { |
int a = 20; |
System.out.println(a); |
} |
|
public static void main(String[] args) { |
Test2 t=new Test2(); |
//定义在方法中的局部变量 |
//调用方法 |
t.test3();//结果:20 |
//定义在方法中的局部变量,出了方法就不能被访问了 |
//System.out.println(a); |
|
//定义在代码块中的局部变量 |
{ |
int b = 22; |
System.out.println(b);//结果:22 |
} |
//定义在代码块中的局部变量,出了代码块就不能访问了 |
//System.out.println(b); |
|
//定义在静态方法中的局部变量,出了方法一样不能被访问 |
test4();//结果:20 |
// System.out.println(a); |
} |
} |