Java--构造方法和对象

构造方法和对象

对局部变量和成员变量的补充

不同
1. 成员变量,作用范围是整个类
局部变量,方法内,语句内
2. 默认值不同
成员变量,有自己的默认值
局部变量,没有默认值,不赋值不能使用
3. 内存位置不同
成员变量,跟随对象进入对内存生命相对较长
局部变量,跟随方法,方法出栈,生命相对较短
4. 定义位置上的区别
成员变量,定义在类中,方法外
局部变量,方法内,语句内
构造方法

当程序用类创建对象时需使用他的构造方法。允许一个类中编写若干个构造方法,但必须保证他们的参数不同,参数不同是指:参数的个数不同,或参数个数相同,但参数列表中对应的某个参数的类型不同。

例:下面Point类有两个构造方法

class Point {
	 int x,y;
	 Point(){
		 x=1;
		 y=1;
	 }
	 Point(int a,int b){
		x=a;
		y=b;
	 }
}

下面Point类只有一个构造方法,其中void Point(int a,int b)和int Point()都不是构造方法。

  • 构造方法没有类型
class Point {
	 int x,y;
	 Point(){
		 x=1;
		 y=1;
	 }
	void  Point(int a,int b){
		x=a;
		y=b;
	 }
   int Point(){
	   return 12;
   }
}

对象 *

创建对象:使用new运算符和类的构造方法为声明的对象分配变量

  • 对象通过使用运算符“.”访问自己的变量
    对象.变量
    (体现对象的属性)
  • 对象通过使用运算符“.”调用自己的变量
    对象.方法
    (体现对象的行为)
    封装:面对对象的三大特征:封装,继承,多态
    关键字 private
  • 属于成员修饰符,不能修饰局部变量
 
 

public class Person {
	 //人的姓名,成员变量
	String name;
	//人的年龄,成员变量
	private int age ;
	//变量age被私有,提供方法,让外面的类使用
	//定义方法,对age变量进行赋值,方法名字,必须set开头
	public void setAge(int a){
		//对变量参数a进行范围的限制
		if(a<0 || a > 200){
			//如果a超过范围,手动将age赋值为20
			age = 20;
		}else{
		//如果a没有超过范围,直接对age赋值
		age = a;
		}
	}
	
	//定义方法,对变量age获取值使用,方法名字get
	public int getAge(){
		return age;
	}
	//定义人的说话功能,方法中,要求说出自己的姓名和年龄
	public void speak(){
		System.out.println(name+"..."+age);
	}
}

关键字 this

public class Person {
	private int age;
	
	public void setAge(int age){
		this.age = age;
	}
	
	public int getAge(){
		return age;
	}
	
	/*
	 * 定义方法: 比较是否是同龄人,是就返回true,不是就返回false
	 * 方法的返回值: true false
	 */
	public boolean compare(Person p){
		//自己和别人比年龄,自己是 this和p
		return this.age == p.age;
	}
}

封装

  • 封装 把对象的属性与方法的实现细节隐藏。
    • 封装的体现
      变量:使用private修饰,这就是变量的封装
      方法:也是一种封装,封装了多条代码
      类:也是一种封装,封装了多个方法
发布了43 篇原创文章 · 获赞 6 · 访问量 1566

猜你喜欢

转载自blog.csdn.net/weixin_43729631/article/details/84640116