Java学习之类和对象
package project.p5;
public class Person {
private String name;
private int age;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
5.3方法
// 语法格式:
// [访问符][修饰符]<返回值类型> 方法名([参数列表]){//方法体}
// 定义一个公共的计算圆面积方法
public double area(double rouble){
return Math.PI*rouble*rouble;
}
// 定义一个私有的静态的求和方法
private static int add(int a,int b){
return a+b;
}
// 定义一个保护型最终的显示信息方法
protected final void display(){
System.out.println("Hello world;");
}
5.3.2方法的参数传递机制
// (1)值传递;
public void display(int a,int b){
int temp=a;
a=b;
b=temp;
System.out.println("a="+a+",b="+b);
}
// (2)引用传递;使用类方法创建对象,可以改变变量值
public static void display(mydata item,int a,int b){
item.setA(a);
item.setB(b);
}
5.3.3构造函数
是类的同名方法,只在类被构造的时候被调用
// 语法结构如下:
// [访问符]构造方法名([参数列表]){
// // 初始化语句
// }
public class Person {
private String name;
private int age;
private String address;
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public Person(String name){
this.name=name;
}
}
5.3.4方法重载
// (1)在同一个类中;
// (2)方法名相同
// (3)方法的参数类型、个数及顺序至少有一项不同;
// (如上的构造函数已经开始重载)
5.3.6 this关键字
// this表示当前实例,可以出现实例成员方法和构造函数中,不可以出现在类成员方法中;
// 1.this的第一种用法:
public class ThisFirstExample{
private double length;
private double width;
private double height;
public ThisFirstExample(double length, double width, double height){
this.length = length;
this.width = width;
this.height = height;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public void display(){
System.out.println("length="+length+",width="+width+",height="+height);
}
public static void main(String[] args){
ThisFirstExample obj = new ThisFirstExample(10,20,30);
obj.display();
}
}
5.3.7可变参数
// 语法格式如下:
// [访问符][修饰符]<返回值类型>方法名([参数列表],数据类型… 变量){
// // 方法体
// }
// 可变参数需要注意以下几点:
// 1.可变参数只能处于参数列表的最后;
// 2.一个方法中最多只能包含一个可变参数;
// 3.可变参数的本质就是一个数组,因此在调用一个包含可变参数的方法时,既可以传入多个参数,也可以传入一个数组
public class ChangeParamExample{
public static int add(int a ,int... b){
int sum=a;
for(int i=0;i<b.length;i++){
sum+=b[i];
}
return sum;
}
public static void main(String[] args){
int[] a={1,2,3,4,5,6};
System.out.println("3+4="+add(3,4));
System.out.println("4+5+6="+add(4,5,6));
System.out.println("sum(a[]+0)="+add(0,a));
}
}
// 2.第二种方法:就是在构造方法中调用本类中的其他方法
public class Person {
public void Person(String str){
System.out.println(str);
this.display();
}
}
5.3.5 static关键字
// 语法格式:
// 类名.静态方法名(形参列表)
// 类名.静态变量名
// 当java虚拟机加载类时,静态代码被一次性执行,称为加载时执行。若类中有多个静态代码块,jvm将按照他们出现的先后顺序依次执行,且每个代码只被执行一次
// 静态类,只能调用静态变量和静态方法。不能使用this和super方法
class StaticText{
int a;
static int b;
static{
a=10;//错误的写法,不能调用非静态方法以外的方法
b=15;
System.out.println("这是静态块的方法!b="+b);
}
public static void display(){
System.out.println("a="+a);//错误方法,不能调用非静态方法以外的方法
System.out.println("b="+b);
}
}