Person3

面向对象Java实例
package 面向对象;

public class Person3 {

	/**
	 * @人的属性: 姓名,年龄,性别 
	 * 人的操作:行走,吃饭,睡觉
	 */
	String name ; //姓名
	int age;      //年龄
	String sex;   //性别
	Person3(String a,int b,String c){//参数化的构造方法
		name =a;
		age = b;
		sex = c;
	}
	public void run(){//走..
		System.out.println(name +"说:我要走了!!");
	}
	public void eat(){//吃饭
		System.out.println(name +"说:我要走了!!我今年"+age+"岁了,我要去打工赚钱了!不然靠什么吃饭!");
	}
	public void sleep(){ //睡觉
		System.out.println(name +"说:我要走了!!我今年"+age+"岁了,我是一个"+sex+",我要外出打工了,不能整天在家里睡觉啊!");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person3 p = new Person3("刘德华",22,"男人");
		p.eat();
		p.sleep();
		p.run();
	}

}

### 代码功能分析 这段JavaScript代码使用构造函数创建对象,具体功能如下: 1. **定义构造函数**:`Person` 是一个构造函数,接收两个参数 `name` 和 `age`。在构造函数内部,使用 `this` 关键字将传入的 `name` 和 `age` 参数赋值给新创建对象的属性。同时,定义了一个 `sayName` 方法,该方法用于在控制台打印对象的 `name` 属性。 2. **创建对象实例**:使用 `new` 关键字调用 `Person` 构造函数三次,分别创建了 `person1`、`person2` 和 `person3` 三个对象实例,并传入不同的 `name` 和 `age` 参数。 3. **输出对象实例**:使用 `console.log` 方法将三个对象实例输出到控制台,方便查看对象的属性和方法。 ### 可能存在的问题 1. **方法重复创建**:每个通过 `Person` 构造函数创建的对象实例都会拥有自己独立的 `sayName` 方法副本。这意味着每次创建新对象时,都会为该方法分配新的内存空间,造成内存浪费。 2. **缺乏数据验证**:构造函数没有对传入的 `name` 和 `age` 参数进行验证,可能会导致传入无效数据,影响程序的稳定性。 ### 优化建议 1. **使用原型链共享方法**:将 `sayName` 方法定义在 `Person` 构造函数的原型对象上,这样所有通过 `Person` 构造函数创建的对象实例都可以共享该方法,避免了方法的重复创建,节省内存。 ```javascript function Person(name, age) { this.name = name; this.age = age; } Person.prototype.sayName = function () { console.log(this.name); }; var person1 = new Person("孙悟空", 18); var person2 = new Person("猪八戒", 19); var person3 = new Person("沙和尚", 20); console.log(person1); console.log(person2); console.log(person3); person1.sayName(); person2.sayName(); person3.sayName(); ``` 2. **添加数据验证**:在构造函数中对传入的 `name` 和 `age` 参数进行验证,确保数据的有效性。 ```javascript function Person(name, age) { if (typeof name === 'string' && typeof age === 'number' && age >= 0) { this.name = name; this.age = age; } else { throw new Error('Invalid name or age'); } } Person.prototype.sayName = function () { console.log(this.name); }; try { var person1 = new Person("孙悟空", 18); var person2 = new Person("猪八戒", 19); var person3 = new Person("沙和尚", 20); console.log(person1); console.log(person2); console.log(person3); person1.sayName(); person2.sayName(); person3.sayName(); } catch (error) { console.error(error.message); } ``` ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值