实训20-三大特性

本文通过实例展示了面向对象编程的概念,包括创建Person类及其子类Student,以及在主类T01中使用这些类进行对象实例化和方法调用。此外,还提供了一个多态性练习,通过工厂模式创建不同产品(如手机和打印机),演示了如何根据产品类型调用相应特性的方法。

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

1 编写程序,实现一个“学生”类继承"人"类

具体要求:
(1)声明一个类Person,该类拥有三个成员变量,分别是private修饰的String类型的id,String的name,int的age,三个成员方法getId()和setId()以及public修饰的printName()方法。
(2)声明类Student继承自Person,子类也有自己的变量,String类型的school和printSchool()成员方法。
(3)声明测试主类T01,在main()中声明Student对象s,直接设置该对象的id、name和age是你的名字、学校是河南应院;调用成员方法输出该对象的姓名和学校。

  • Person类
package hati.lsz.ch02;

/**
 *  (1)声明一个类Person,该类拥有三个成员变量,分别是private修饰的String类型的id,String的name,int的age,
	   三个成员方法getId()和setId()以及public修饰的printName()方法。
 * @author  
 *
 */
public class Person {
	private String id;
	
	private String name;
	
	private int age;

	public String getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
 
	public void printName() {
		System.out.println( "Person [id=" + id + ", name=" + name + ", age=" + age + "]");
	}

	
 
	
	
}

  • Student 类
package hati.lsz.ch02;

/**
 * 
 * @author  
 * (2)声明类Student继承自Person,子类也有自己的变量,String类型的school和printSchool()成员方法。
 */
public class Student extends  Person{
	private String school;

	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}
 
	public void printSchool() {
		System.out.println("Student [school=" + school + "]"); 
		
	}
	
	
	 
}

  • T01类
package hati.lsz.ch02;

import java.util.Date;
 

/**
 * 	 
		 * 1 编写程序,实现一个“学生”类继承"人"类 
		 * 具体要求: 
		 * (1)声明一个类Person,该类拥有三个成员变量,分别是private修饰的String类型的id,String的name,int的age,
		 * 三个成员方法getId()和setId()以及public修饰的printName()方法。
		 * 
		 * (2)声明类Student继承自Person,子类也有自己的变量,String类型的school和printSchool()成员方法。
		 * 
		 * (3)声明测试主类T01,在main()中声明Student对象s,直接设置该对象的id、name和age是你的名字、学校是河南应院;
		 * 调用成员方法输出该对象的姓名和学校。
		 
 * @author  
 *
 */
public class T01 {

	public static void main(String[] args) {
//		 (3)声明测试主类T01,在main()中声明Student对象s,直接设置该对象的id、name和age是你的名字、学校是河南应院;
//		  调用成员方法输出该对象的姓名和学校。
		
		Student s = new Student();
		s.setId("1");
		s.setName("小明");
		s.setAge(13);
		s.setSchool("河南应院"); 
		s.printName();
		s.printSchool();
	}
 

}

  • 效果图

在这里插入图片描述

2 多态性练习(可用于借鉴):

编写程序实现工厂生产产品。
工厂可以生产不同的产品:
	包括打印机、手机,这些产品有共同属性:类型、厂商、价格,
打印机有自己的特性:
	打印色彩、打印纸张大小;
手机有自己的特性:屏幕大小、CPU。
工厂根据产品类型生产不同的产品。 
  • 效果
    在这里插入图片描述
  • 结构图

在这里插入图片描述

  • T01类
package hati.lsz.ch02;


/**
 * 	多态性练习:

	编写程序实现工厂生产产品。
	工厂可以生产不同的产品:
		包括打印机、手机,这些产品有共同属性:类型、厂商、价格,
	打印机有自己的特性:
		打印色彩、打印纸张大小;
	手机有自己的特性:屏幕大小、CPU。
	工厂根据产品类型生产不同的产品。
 * @author  
 *
 */
public class T01 {

	public static void main(String[] args) {
		
		 Factory f = new Phone1();// 向上转型 
		 f.factory();			 调用的是 Factory 的 factory 
		 Phone1 phone1 = new Phone1(); //向下转型
		 phone1.character();		// 调用的是 Phone1 的 character
		 
		 
		getshow(new Phone2()); //以 Phone2 对象调用 show 方法
		System.out.println();
		
		getshow(new Printer1());//以 Printer1 对象调用 show 方法
		System.out.println();
		
		getshow(new Printer2());//以 Printer2 对象调用 show 方法
		System.out.println(); 
		

	}
	
	public static void getshow(Factory f) {
		f.factory();
		 // 类型判断
        if (f instanceof Phone1)  {  // 猫做的事情 
        	Phone1 c = (Phone1)f;  
            c.character();  
        } else if (f instanceof Phone2)  {  // 猫做的事情 
        	Phone2 c = (Phone2)f;  
            c.character();  
        } else if (f instanceof Printer1)  {  // 猫做的事情 
        	Printer1 c = (Printer1)f;  
            c.character();  
        } else if (f instanceof Printer2)  {  // 猫做的事情 
        	Printer2 c = (Printer2)f;  
            c.character();  
        } 
	}
}

  • Factory 类
package hati.lsz.ch02;

/**
 * 	工厂可以生产不同的产品:
		包括打印机、手机,这些产品有共同属性:类型、厂商、价格,
 * @author  
 *
 */
public abstract class Factory {

	 abstract void factory();  
 

}

  • Phone1 类
package hati.lsz.ch02;

/**
 * 	手机有自己的特性:屏幕大小、CPU。
	工厂根据产品类型生产不同的产品。
 * @author dell
 *
 */
public class Phone1 extends Factory {
	public void factory() {
		System.out.println("手机类型:X1 /t  厂商:高通 /t 价格:2000");
	
	}
	
	public void character() {
		System.out.println("屏幕大小:4.5*6");
		System.out.println("CPU:F468"); 
	}
}

  • Phone2 类
package hati.lsz.ch02;

/**
 * 	手机有自己的特性:屏幕大小、CPU。
	工厂根据产品类型生产不同的产品。
 * @author dell
 *
 */
public class Phone2 extends Factory{
	public void factory() {
		System.out.println("手机类型:Q1 /t  厂商:三星 /t 价格:1000");
		
	}
	public void character() {

		System.out.println("屏幕大小:5*7");
		System.out.println("CPU:猎户座");
	}
}

  • Printer1 类
package hati.lsz.ch02;

/**
 * 
 * @author  
 *	打印机有自己的特性:
 *	打印色彩、打印纸张大小;
 */
public class Printer1 extends Factory{
	
 
  public void factory() {
		System.out.println("打印机类型:W1 /t  厂商:WW1 /t 价格:500");
		
	}
	public void character() {

		  System.out.println("打印色彩:红色");
		  System.out.println("打印纸张大小:A4");
	}
	
	
	
} 
  • Printer2 类
package hati.lsz.ch02;

/**
 * 
 * @author  
 *	打印机有自己的特性:
 *	打印色彩、打印纸张大小;
 */
public class Printer2 extends Factory{
	
  
  	public void factory() {
		System.out.println("打印机类型:EE /t  厂商:EE1 /t 价格:600");
		
	}
	public void character() {

		 System.out.println("打印色彩:紫色 ");
		  System.out.println("打印纸张大小:A5");
	}
	
	
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值