面向对象(上)之 构造器与封装

构造器

package java_study01;

/**
 * 类的成员之三:构造器 (constructor,构造方法) construct:建造、建设 construction
 * 
 * 
 * 1.构造器的作用:① 创建类的对象 ② 初始化对象的属性
 * 
 * 2.说明: ①如果在定义一个类时,没有显式的声明类的构造器。那么系统会自动给类提供一个无参的构造器。 ②如何声明一个类的构造器。格式:权限修饰符
 * 类名(形参列表){ } ③如果我们在类中一旦定义类的构造器,那么系统就不再提供默认的无参的构造器了。 ④类的多个构造器之间,彼此构成重载
 * ⑤总结:类中,一定会有构造器!
 * 
 * 3.关于类中属性赋值的先后顺序: ①默认初始化 - ②显式初始化 - ③构造器中初始化 - ④通过"对象.属性" 或 "对象.方法"的方法,给属性赋值
 * 
 * 
 */

public class gouzaoqi {
	public static void main(String[] args) {
		People p1 = new People();
		p1.eat();
		
		People p2 = new People("Tom",12);
		System.out.println(p2.name);
		System.out.println(p2.age);
		
		//验证属性赋值的顺序
		People p3 = new People();
		System.out.println(p3.name);
		
		People p4 = new People("BB");
		System.out.println(p4.name);
		
		p4.name = "CC";
		System.out.println(p4.name);
		

	}
}

class People {
	// 属性
	String name = "AA";
	int age;

	// 空构造器(构造器的重载)
	public People() {

	}

	public People(String n) {
		System.out.println("hello!");
		name = n;
	}

	public People(int a) {
		age = a;
	}

	public People(String n, int a) {
		name = n;
		age = a;
	}

	// 不能再声明了
//	public Person(String m){
//		
//	}

	// 方法
	public void eat() {
		System.out.println("吃饭");
	}

	public void sleep(int hour) {
		System.out.println("睡觉,睡了" + hour + "个小时");
	}

}

封装

package java_study01;

/**

  • 面向对象的特征一:封装与隐藏 3w: what? why? how?
  • 1.问题的引入? 我们在创建了一个类的对象以后,通过"对象.属性"的方式,可以给对象的属性赋值。对此属性的赋值,是有限制的,比如:数据类型和
  • 数据类型储值范围的限制。但是,在实际问题中,还通过需要额外的限制。同时这些额外的限制,不可能在属性的声明中加上限制逻辑。
  • 那么,我们只能考虑通过方法,对属性的赋值进行额外的限制。同时,我们必须禁止再直接通过"对象.属性"的方式,对属性进行赋值。
  • 2.封装性的体现:(狭义上的体现)
  • 私有化(private)类的属性xxx,同时,提供公共的(public)设置(setXxx())和获取(getXxx())的方法
  • 3.封装性的体现:(广义上的体现) 3.1 java规定的4种权限修饰:(从小到大) private --> 缺省 --> protected -->
  • public 3.2 java规定的4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类。 3.3
  • 具体来讲:4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类。 只能使用缺省 或者 public 来修饰类
    */

public class fengzhuang {
public static void main(String[] args) {
Dogs dogs = new Dogs();
dogs.SetLegs(3);
dogs.GetLegs();

}

}

class Dogs {
String name;
int ages;
// 封装成私有变量
private int legs;

// 提供set方法
public void SetLegs(int i) {
	if (i > 0 && i <= 4) {
		legs = i;
	} else {
		legs = 0;
	}
}

// 提供get方法
public void GetLegs() {
	System.out.println(legs);
}

}

封装与构造器练习

package java_study01;

/*
 * 练习:
 * 考查:封装性、构造器的使用
 * 编写两个类,TriAngle和TriAngleTest,其中TriAngle中声明私有的底边长base和高height,
 * 同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
 */

public class TriAngleTest {
	public static void main(String[] args) {
		TriAngle t = new TriAngle(10.0, 20.0);
		double area = t.findArea();
		System.out.println("三角形的面积为:" + area);

		t.setBase(2.3);
		t.setHeight(2.4);

		area = t.findArea();
		System.out.println("三角形的面积为:" + area);
	}
}

class TriAngle {
	private double base;
	private double height;

	//
	public TriAngle() {

	}

	public TriAngle(double b, double h) {
		base = b;
		height = h;
	}

	public void setBase(double b) {
		base = b;
	}

	public double getBase() {
		return base;
	}

	public void setHeight(double h) {
		height = h;
	}

	public double getHeight() {
		return height;
	}

	// 求三角形的面积
	public double findArea() {
		return base * height / 2;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值