1.类的继承
代码如下:
package step1;
import java.util.Scanner;
class Person {
/********** Begin **********/
// 自行设计类的实现
protected String name;
protected String sex;
protected int age;
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
/********** End **********/
}
class Student extends Person {
/********** Begin **********/
// 自行设计类的实现
private String no;
private String enter;
private String major;
public Student(String name, String sex, int age, String no, String enter, String major) {
super(name, sex, age);
this.no = no;
this.enter = enter;
this.major = major;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getEnter() {
return enter;
}
public void setEnter(String enter) {
this.enter = enter;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
@Override
public String toString() {
return super.name+","+super.sex+","+this.age+","+this.no+","+this.enter+","+this.major;
}
/********** End **********/
}
class Teacher extends Person {
/********** Begin **********/
// 自行设计类的实现
private String pro;
private String department;
public Teacher(String name, String sex, int age, String pro, String department) {
super(name, sex, age);
this.pro = pro;
this.department = department;
}
public String getPro() {
return pro;
}
public void setPro(String pro) {
this.pro = pro;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
@Override
public String toString() {
return super.name+","+super.sex+","+this.age+","+this.pro+","+this.department;
}
/********** End **********/
}
public class Lab3_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Student student = new Student(sc.next(), sc.next(), sc.nextInt(), sc.next(), sc.next(), sc.next());
Teacher teacher = new Teacher(sc.next(), sc.next(), sc.nextInt(), sc.next(), sc.next());
System.out.println("学生基本信息为:" + student);
System.out.println("教师的信息为:" + teacher);
sc.close();
}
}
2.上转型对象的使用,多态的特性
代码如下:
package step2;
abstract class Employee {
public abstract double earnings();
}
class YearWorker extends Employee {
//重写earnings()方法
/********** Begin **********/
@Override
public double earnings() {
return 100000.0;
}
/********** End **********/
}
class MonthWorker extends Employee {
//重写earnings()方法
/********** Begin **********/
@Override
public double earnings() {
return 120000.0;
}
/********** End **********/
}
class WeekWorker extends Employee {
//重写earnings()方法
/********** Begin **********/
@Override
public double earnings() {
return 5000.0*4*12;
}
/********** End **********/
}
class Company {
Employee[] employees;
double salaries = 0;
Company(Employee[] employees) {
this.employees = employees;
}
public double salariesPay() {
salaries = 0;
//计算salaries
/********** Begin **********/
for(Employee employee:employees) {
salaries+=employee.earnings();
}
/********** End **********/
return salaries;
}
}
public class HardWork {
public static void main(String[] args) {
Employee[] employees = new Employee[20];
for (int i = 0; i < employees.length; i++) {
if(i%3==0)
employees[i] = new WeekWorker();
else if(i%3==1)
employees[i] = new MonthWorker();
else if(i%3==2)
employees[i] = new YearWorker();
}
Company company = new Company(employees);
System.out.println("公司年工资总额:" + company.salariesPay());
}
}
3.接口的使用
代码如下:
package step3;
// 自行设计接口和实现类
/********** Begin **********/
interface Display{
void display();
}
class Adervise implements Display{
@Override
public void display() {
System.out.println("广告消息");
}
}
class Car implements Display{
@Override
public void display() {
System.out.println("汽车油量");
}
}
class Inform implements Display{
@Override
public void display() {
System.out.println("通知内容");
}
}
/********** End **********/
public class Lab3_3 {
public static void main(String[] args) {
Display[] arr = { new Inform(), new Car(), new Adervise() };
for (Display d : arr) {
d.display();
}
}
}
4.综合应用
代码如下:
1:学生类Student.java
package step4;
public class Student {
/********** Begin **********/
private String sno;
private String sname;
private String sdept;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSdept() {
return sdept;
}
public void setSdept(String sdept) {
this.sdept = sdept;
}
@Override
public String toString() {
return "学号: "+sno+" 姓名: "+sname+" 系部: "+sdept;
}
/********** End **********/
}
2:接口IStudentDAO
package step4;
public interface IStudentDAO {
/********** Begin **********/
// 插入学生信息记录
public void insertStudent(Student stu);
// 删除指定学号学生信息记录
public void deleteStudent(String sno);
// 更新指定学生信息记录
public void updateStudent(Student stu);
// 按学号查询指定学生信息记录
public Student findStudentBySno(String sno);
// 显示指定学号学生信息记录
public void displayStudentBySno(String sno);
// 显示所有学生信息记录
public void displayAllStudent();
/********** End **********/
}
3:接口IStudentDAO的实现类StudentDAOImpl
package step4;
import java.util.ArrayList;
import java.util.List;
public class StudentDAOImpl implements IStudentDAO {
static List<Student> students = new ArrayList<Student>();
/********** Begin **********/
//自行实现所有其它方法
@Override
public void insertStudent(Student stu) {
// TODO Auto-generated method stub
students.add(stu);
}
@Override
public void deleteStudent(String sno) {
// TODO Auto-generated method stub
for(Student s:students) {
if(s.getSno()==sno) {
students.remove(s);
break;
}
}
}
@Override
public void updateStudent(Student stu) {
// TODO Auto-generated method stub
for(Student s:students) {
if(s.getSno()==stu.getSno()) {
s.setSname(stu.getSname());
s.setSdept(stu.getSdept());
}
}
}
@Override
public Student findStudentBySno(String sno) {
// TODO Auto-generated method stub
for(Student s:students) {
if(s.getSno()==sno) {
return s;
}
}
return null;
}
@Override
public void displayStudentBySno(String sno) {
// TODO Auto-generated method stub
}
/********** End **********/
/**
* 显示所有学生信息记录参考代码
*/
@Override
public void displayAllStudent() {
if (students.size() > 0) {
for (Student stu : students) {
System.out.println(stu);
}
}else {
System.out.println("数据库中无学生记录!");
}
}
}
4:主类MainClass
package step4;
import java.util.Scanner;
public class MainClass {
int menu_select(Scanner scanner) {
return 0;
}
void inputStudent(Student stu,Scanner scanner) {
}
void updateStudent(Student stu,Scanner scanner) {
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StudentDAOImpl studentDAOImpl = new StudentDAOImpl();
//1. 插入学生信息
Student stu = new Student();
stu.setSno(scanner.next());
stu.setSname(scanner.next());
stu.setSdept(scanner.next());
studentDAOImpl.insertStudent(stu);
//2. 显示插入学生信息
System.out.println("1. 插入学生信息如下:");
studentDAOImpl.displayAllStudent();
//3. 更新学生信息
stu.setSname("李四");
stu.setSdept("计算机系");
studentDAOImpl.updateStudent(stu);
System.out.println("2. 更新后学生信息如下:");
System.out.println(studentDAOImpl.findStudentBySno(stu.getSno()));
//4. 删除指定学生信息
System.out.println("3. 删除当前学号学生信息:" + stu.getSno());
studentDAOImpl.deleteStudent(stu.getSno());
System.out.println("学生信息已删除!");
//2. 显示插入学生信息
System.out.println("5. 显示所有学生信息:");
studentDAOImpl.displayAllStudent();
scanner.close();
}
}