java 面向对象编程

一直对面向对象编程的概念较模糊,今天认真理了一遍,按要求写了容易理解的小程序模板(PS:内容不重要,关键是面向对象的思想,层次等。)

1. 要求

  1. 要求此人类必须包含有人的姓名、性别、出生日期等基本属性(变量)。
  2. 要求此人类描述吃饭的方法(函数)和描述睡觉的方法(函数)。例如睡觉方法的执行体为一个 System.out.println() 函数,此函数输出一段例如“ xx(姓名)往床上躺倒,不久就睡着了……”之类的描述睡觉的文本。
  3. 要求此人类的构造函数要具有无参数的构造函数,以及带有姓名、性别、出生日期等参数的构造函数,并在构造函数中输出一段描述xx(姓名)出生的文本。
  4. 实例化出张三和李四两个人类对象(变量),并为之赋初值。
  5. 调用张三、李四等人类对象的各种属性(类成员变量)和方法(函数)。
  6. 在上述人类的基础上派生一个继承自人类的新的学生类,加入学号等学生特有的属性,加入上课、考试等方法,并实例化一个或几个学生类对象,完成这些学生类对象的各种属性和方法的调用。

2. 代码

package ObjectOriented;
//定义类
class Person {
	String name;//声明字段name
	String brithday;//声明段brithday
	int age;//声明字段age
	Person(){//定义无参构造函数,无返回值定义,方法与类同名。
	    //初始化
		name = "张三";
		age = 20;
		brithday = "1月1日";
		System.out.println("");
	}
	Person(String newName,int newAge,String newBrithday){//重写一个带参数构造函数,无返回值定义,方法与类同名。
		name = newName;//name为对象的属性,newName为函数形参。
		age = newAge;
		brithday = newBrithday;
		//也可以写成以下形式
		/*
		this.name=name;//前一个name为对象的属性,有this指定,因为在本类中可直接访问,后一个name为函数形参。
		this.age=age;//前一个age为对象的字段,有this指定,后一个age为函数形参。
		this.brithday=brithday;
		*/
	}
	void sleep() {//定义无参数的sleep方法
		System.out.println(name+"往床上躺倒,不久就睡着了。");
	}
	//定义带参数的sleep方法,实现方法重载
	public void sleep(String a) {//定义带参数的sleep方法,实现方法重载
		System.out.println(name+"往床上躺倒,不久就睡着了。"+a);
	}
}

class Student extends Person {//继承,Studeent为子类,Person为父类
	int xuehao;//声明字段xuehao
	//定义无参构造函数,无返回值定义,方法与子类同名。
	Student(){
	}
	//重写一个带参数构造函数,无返回值定义,方法与子类同名。
	Student(int xuehao){
		this.xuehao = xuehao;
	}
	void attendClass() {//定义上课方法
		System.out.println("上课");
	}
	void exam() {//定义考试方法
		System.out.println("考试");
	}
}

//使用类创建对象
public class TestPerson {

	public static void main(String[] args) {
		//调用类的无参构造函数,使用new操作符从构造方法创建一个对象
		Person person1 = new Person();
		System.out.println(person1.name + "今年" + person1.age + "岁,生日是" + person1.brithday + "," );
		person1.sleep();
		
		Person person2 = new Person();
	    person2.name = "李四";
		person2.age = 21;
		person2.brithday = "1月2日";
		System.out.println(person2.name + "今年" + person2.age + "岁,生日是" + person2.brithday + "," );
		person2.sleep("进入了梦乡。");
		
		Student student1 = new Student();
		student1.name = "王五";//变量继承
		student1.age = 19;
		student1.brithday = "1月3日";
		System.out.println(student1.name + "今年" + student1.age + "岁,生日是" + student1.brithday + "," );
		student1.sleep();//方法继承,父类方法
		System.out.println("第二天又要");
		student1.attendClass();//子类方法
		System.out.print("又要");
		student1.exam();//子类方法
	}

}

3. 执行结果

这里写图片描述

猜你喜欢

转载自blog.csdn.net/Yangchenju/article/details/82810707