Java基础知识面向对象作业—02

这篇博客详细探讨了Java编程中的面向对象基础知识,包括类、对象、封装、继承和多态等核心概念。通过实例解析,帮助读者深入理解如何在实际编程中应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java基础知识面向对象作业—02

1、构造方法的格式是什么?有哪些注意事项?
		公开的构造,外界可以创建对象;’
		public className(){}
		私有的构造,不可以创建对象
		private className(){}
		注意事项:构造方法在一次创建对象时只能加载一次;如果没有手动构造函数,虚拟机会自动生产一个无参无返回值的构造;
						一旦手动构造了一个构造函数,则系统不会再提供任何的构造函数,建议在构造时顺带写一个空参构造;

2、构造方法可以重载吗? 里边可以有return语句吗?
		构造方法可以重载,可以有不同参数列表的构造初始化函数,用来产生不同的初始化值;
		可以有return 语句,但是不可以写真正的返回值,因为构造函数本身没有规定返回值类型;
3、给成员变量赋值有几种方式?有什么区别?
		1.默认赋值;由虚拟机自动赋值
		2.显示赋值;由用户手动赋值
		3.构造函数赋值;由用户手动赋值
		这三者对相同的变量赋值时会逐级覆盖;
4public static void main(String[] args) {
		Person p = new Person();  
   },这段代码在内存中做了哪些事情?
	1.首先main函数进栈;
	2.Person类的字节码文件加载进入方法区;
	3.Person()构造方法加载进入方法区;
	4.在栈中产生一个Person 类型的变量p;
	5.在堆中产生了一个实例对象,p变量指向该实例对象;
5、需求:定义一个长方形类,定义求周长和面积的方法,然后定义一个测试类进行测试。
		import java.util.Scanner;
		class  Rect {
			private static Scanner in = new Scanner(System.in);
			public static void main(String[] args) {
				//主函数入口
				System.out.print("输入长方形的长:");
				int longth = in.nextInt();
				System.out.print("请输入长方形的宽:");
				int width = in.nextInt();
				Calc c = new Calc(longth,width);
				int AllArea = c.calcArea();
				int Alllongth = c.calcLongth();
				System.out.println("周长为:"+Alllongth+",,面积为:"+AllArea);
			}
		}

		class Calc{
			static int longth;
			static int width;
			public Calc(int longth,int width){
				 this.longth = longth;
				 this.width = width;
			}
			public static int calcArea(){
				int area = longth * width;
				return area;
			}
			public static int calcLongth(){
				int Alllongth = 2*(longth + width);
				return Alllongth;
			}

		}

6、根据需求,完成如下代码(按照标准格式写:私有属性、空参有参构造、getset方法),并在测试类中进行测试。
	需求一:
		员工类Employee
			属性:姓名name,工号id,工资salary 
			行为:显示所有成员信息的方法show()

				class TestEmployee {
				public static void main(String[] args) {
					//主函数入口
				Employee e = new Employee();
				e.setName("steven");
				e.setId("6666666");
				e.setSalary(6666666);
				e.show();
				}
			}

			class Employee{
				 private String name;
				 private String id;
				 private double salary;
				 public Employee(){}

				 public Employee(String name,String id,double salary){
					this.name = name;
					this.id = id;
					this.salary  = salary;

				 }

				 public void setName(String name){
					 this.name = name;
				 }

				 public void setId(String id){
					this.id = id;
				 }

				 public void setSalary(double salary){
					this.salary  = salary;
				 }

				 public String getName(){
					return name;
				 }
				  public String getId(){
					return id;
				 }
				  public double getSalary(){
					return salary;
				 }
				 public  void show(){
					System.out.println("姓名:"+name+", ID:"+id+", Salary:"+salary);
				 }
			}
	需求二:
		动物类Animal
			属性:姓名name,年龄age
			行为:吃饭eat,睡觉sleep
			class TestAnimals {
			public static void main(String[] args) {
				//主函数入口
			Animals a = new Animals();
			a.setName("旺财");
			a.setAge(5);
			a.eat();
			a.sleep();
			}
		}

		class Animals{
			private String name;
			private int age;
			public Animals(){}
			public Animals(String name,int age){
				this.name = name;
				this.age = age;
			}
			public void setName(String name){
				 this.name = name;
			}

			public void setAge(int age){
				this.age = age;
			}
			public void eat(){
			System.out.println(name+"喜欢吃骨头!");
			}

			public void sleep(){
			System.out.println(name+"喜欢睡觉!");
			}

		}
	需求三:
		人类Person
			属性:姓名name,年龄age,性别gender
			行为:学习study,睡觉sleep

			class  TestPerson {
			public static void main(String[] args) {
				//主函数入口
			Person p = new Person();
			p.setName("Steven");
			p.setAge(23);
			p.setGender(true);
			p.study();
			p.sleep();
			}
		}

		class Person{
			private String name;
			private int age;
			private boolean gender;
			public Person(){}
			public Person(String name,int age,boolean gender){
				this.name = name;
				this.age = age;
				this.gender = gender;
			}
			public void setName(String name){
				 this.name = name;
			}

			public void setAge(int age){
				this.age = age;
			}

			public void setGender(boolean gender){
				this.gender = gender;
			}

			public void study(){
			System.out.println(name+"爱学习!");
			}

			public void sleep(){
			System.out.println(name+"又喜欢睡觉!");
			}
		}

7static关键字有什么特点,使用的时候有什么注意事项?
	被static 关键字修饰的成员可以通过类名直接调用;
	被static 关键字修饰的变量存放于方法区的静态池中;
	被static 关键字修饰的变量是公有的;
	使用static可以节省空间内存,将同一属性值的变量存放在静态池中,也便于属性的维护与管理;
	注意事项:静态方法只能调用静态的属性,不能调用非静态的属性;
					反过来非静态方法可以调用静态以及非静态的属性;
					在静态方法中不能使用this关键字,因为this是有对象产生的,而静态是由类产生的,且静态方法加载的时机先于对象,
					可能导致在调用时,静态方法存在,而对象并不存在!
8、静态变量和非静态变量的区别是什么?
			所属不同:静态属于类。非静态属于对象;
			存在的内存空间不同:静态存在于方法区的静态池中,非静态存在于堆中;
			内存时间(生命周期)不同:非静态从对象创建时存在,随对象的结束而结束;
														静态从类第一次创建本类对象时而存在,随着类的产生而产生,随着类的结束而结束;
9、自学Random类,然后通过Random类来实现猜数字的小游戏。
			import java.util.Scanner;
			class  Game {
				private static Scanner in = new Scanner(System.in);
				public static void main(String[] args) {
					//主函数入口
					int cut = 0;
				int num = (int)(Math.random()*100+1);
				System.out.println("随机数已经产生,开始猜数!");
				while(true){
					int cs = in.nextInt();
					cut++;
					if(cs == num){
						System.out.println("猜中了!!!");
						break;
					}else if(cs < num){
						System.out.println("继续努力,猜小了");	
					}else{
						System.out.println("继续努力,猜大了");	
					}
				}
				System.out.println("你一共猜了"+cut+"次,游戏结束!");
				}
			}
10、自学Random类,然后通过Random类来实现本班级的随机点名器
			import java.util.Scanner;
			class TestRollCall {
				private static Scanner in = new Scanner(System.in);
				public static void main(String[] args) {
					//主函数入口
					RollCall  rc = new RollCall();
					System.out.println("请输入随机的次数:");
					int times = in.nextInt();
					int num = 0;
					for(int i = 0;i<times;i++){
						num = (int)(Math.random()*(rc.names.length)+1);
					}
					String name = rc.getName(num);
					System.out.println("恭喜你,"+num+"号,"+name+"同学!");
				}
			}

			class  RollCall{
				String[] names = {"罗俊雅","苟欢悦","敛涛","乾志新","幸艳蕙","弥寄蕾","申姮植",
					"典丽","松雅惠","茅思萱","初浩歌","袁依云","卫同","甫枝智","刚敖怜","双汉","柔丽",
					"长春燕","靖采蓝","阿贞韵","盖山雁","仇康时","彤俊远","从乐语","坚奥婷","撒凝静",
					"僪思雁","弓思菱","毕晖霍","阳旭来","驰海甘","映天频","轩秀平","秀艾佴","光熙伍",
					"良策","淦涵","菡瓮","千柔常","谧堵","心奉乐","安仉夜","柳问晓","露傅童","欣肖文",
					"心夙莺","允灵秀","回安梦","礼自明","荤平萱","揭傲霜","邹添智","亓官芝","裘子童",
					"素偲偲","佟诚蔚","合乐","郁紫","文鹿青","文孛溥","邝香岚"};
				public String getName(int num){
				return names[num-1];
				}
			}
11、自学Math类中的简单方法
			java.lang 类 Math(直接在lang包下,不需要导包)
			常用工具:
			abs(int a) 
				  返回 int 值的绝对值。
			pow(double a, double b) 
				  返回第一个参数的第二个参数次幂的值。
			random() 
				  返回带正号的 double 值,该值大于等于 0.0 且小于 1.0sqrt(double a) 
				  返回正确舍入的 double 值的正平方根。
			PI 
				  比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值