Person及其子类

package cn.exp;
//都是比较常见和标准的写法。注意eclipse工具的使用。
class AgeException extends RuntimeException{
	  public AgeException(String Message) {
           super(Message);
	  }
}
class Person{
	String name;
	String gender;
	int age;
	public Person(String name, String gender, int age) {
		//super();
		if(age<=0){
			throw new AgeException("年龄错误,请重新输入");
		}
		this.name = name;
		this.gender = gender;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", gender=" + gender + ", age=" + age+ "]";
	}

}
class Student extends Person{
	int id;
	public Student(String name, String gender, int age, int id) {
		super(name, gender, age);
		if(age<=0){
			throw new AgeException("年龄错误,请重新输入");
		}
		this.id = id;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", gender=" + gender + ", age=" + age
				+ ",id="+id+"]";
	}
	public void show(){
		System.out.println("学生爱学习");
	}

}
class Teacher extends Person{
	int pid;
	public Teacher(String name, String gender, int age, int pid) {
		super(name, gender, age);
		if(age<=0){
			throw new AgeException("年龄错误,请重新输入");
		}
		this.pid = pid;
	}
	public int getPid() {
		return pid;
	}
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String toString(){
		return "Teacher [name=" + name + ", gender=" + gender + ", age=" + age
				+ ",pid="+pid+"]";
	}
	public void show(){
		System.out.println("老师爱吃饭");
	}
}

	public class PersonTest1 {
        public static void main(String[] args) {
			Student student=new Student("小米", "女", 12, 77);
			student.show();
			System.out.println(student.toString());
			Teacher teacher=new Teacher("小兰", "男", 77, 88);
			teacher.show();
			System.out.println(teacher.toString());
		}
}
时间: 2024-11-25 18:12:47

Person及其子类的相关文章

android java 继承父类里的子类问题!!!!!!!

问题描述 android java 继承父类里的子类问题!!!!!!! 请问各位,java可以继承父类的方法和全部属性,那父类里的子类可以继承使用么? android 可以继承父类的Handler.广播么??

java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题

/* 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 */ import static java.lang.System.out; public class PersonDemo { public static void main(String[] args) { //*********测试父类与子类之间的循环调用的问题 out.println("main1&quo

jvm执行流程(static代码块和初始化快和父类子类执行过程)

大家猜想一下,结果会是什么? 为什么会是这样呢? 1.jvm加载StaticBlock的main方法前,要看SubClass中是否有静态的变量和语句,如果有,先给这些静态的变量分配存储空间和执行静态语句(不是静态方法),且由于SubClass的父类中也有静态的变量,根据继承的特性,则先执行父类Parent的静态数据的初始化,然会执行子类的静态数据的初始化. 2.执行main方法中的new StaticBlock(); 语句,进行Parent的类的实例化因为Parent的静态数据已经实例化,并且在

主类main方法里面可以有不带public的子类 但是不能有接口

1.//还可以写在main外面 2. interface product{ 3. public void getName(); 4. } 5. class productA implements product { 6. @Override 7. public void getName() { 8. // TODO Auto-generated method stub 9. System.out.println("++++A++++"); 10. } 11. 12. } 13. cla

子类继承HibernateDaoSupport后如何注入SessionFactory

子类继承HibernateDaoSupport后,由于HibernateDaoSupport,setSessionFactory是使用final修飾的,無法重寫,沒有辦法使用註解的方式注入sessionFactroy public final void setSessionFactory(SessionFactory sessionFactory) {         if (this.hibernateTemplate == null || sessionFactory != this.hib

java-Java抽象类中的非抽象方法的方法体为空,子类也没有头给予实现,但却被调用了是什么意思

问题描述 Java抽象类中的非抽象方法的方法体为空,子类也没有头给予实现,但却被调用了是什么意思 读源码的时候关键地方卡住了,在一个方法的结尾把数据作为参数调用了一个抽象类的方法,这个方法不是抽象方法,方法体也是空的,这个抽象类的子类只有一个,而且也没有实现这个方法,那这些数据到底了什么地方呢? 解决方案 实现方法在子类中,多态的概念,父类有这个方法(不是abstract的),所以要写一个空方法,具体实现由子类处理 解决方案二: 子类继承了父类, 不管是否重写父类的方法,都可以调用父类的方法吧

java子类的super关键词问题

问题描述 java子类的super关键词问题 看以下为代码 public class 子类名 extends 父类名{ super( ); //这里的super是不是省略了父类的名字,也就是 super 父类名( ) 解决方案 不是省略了父类名,而是这里super本身就是父类名,根本就不需要,也不能再加上类名. 好比this就是本对象一样 解决方案二: no no 构造函数是不能被重写的 解决方案三: super就是调用父类的方法,这个父类可能是他的直接父类,也可能是他的父类的父类 解决方案四:

java-Java动态绑定,对象已经向上转型了,为何优先使用的方法依然是子类的方法。

问题描述 Java动态绑定,对象已经向上转型了,为何优先使用的方法依然是子类的方法. 情况如下,我写了个测试类. son类 public class son extends father { public son() { fs=""new son""; } public void say() { System.out.println(""son say()""); } father类 public class father {

imestamp-Date或子类的输出格式(要求类型不能变)

问题描述 Date或子类的输出格式(要求类型不能变) 比如Person的成员变量 java.util.Date createTime; 现在想要System.out.println(person.getCreateTime());输出的结果是 2015-12-12 12:12:12 . 但现在输出的是Sun Apr 12 23:56:56 CST 2015 CST格式. 这里明显不能使用SimpleDateFormat.因为需要的是Date的数据(实际情况中使用了反射). 尝试过子类Timest

java中有类的子类一说,那有对象的子对象一说吗?

问题描述 java中有类的子类一说,那有对象的子对象一说吗? java中有类的子类一说,那有对象的子对象一说吗?新手提问莫见笑. 解决方案 类的子类专业点说叫继承,对象的子对象你可以理解成方法的重写或重载等. 解决方案二: 那是不是类中有内部类就可以呢?