1. 程式人生 > >面向物件學習第四節

面向物件學習第四節

1.編寫一個學生類,提供name、age、gender、phone、address、email成員變數,且為每個成員變數提供setter、getter方法。為學生提供預設的構造器和帶所有成員變數的構造器。為學生提供方法,用於描繪吃、喝、玩、睡等行為。

2.利用第1題定義的Student類,定義一個Student[]陣列儲存多個Student物件作為通訊錄資料。程式可通過name、email、address查詢,如果找不到資料,則進行友好的提示。

/*
 * 需求:利用之前定義的Student類,定義一個Student[]陣列儲存多個student物件作為通訊錄資料
 * 程式可通過name、email、address查詢,如果找不到資料,則進行友好的提示
 * */
import java.util.Scanner;
class Student{
	private String name;
	private int age;
	private String gender;
	private long phone;
	private String address;
	private String email;
	//建立沒有引數的構造器
	public Student(){	
	}
	//建立帶有所有成員變數引數的構造器
	public Student(String name,int age,String gender,long phone,String address,String email){
		this.name=name;
		this.age=age;
		this.gender=gender;
		this.phone=phone;
		this.address=address;
		this.email=email;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getName(){
		return this.name;
	}
	public void setAge(int age){
		this.age=age;
	}
	public int getAge(){
		return this.age;
	}
	public void setGender(String gender){
		this.gender=gender;
	}
	public String getGender(){
		return this.gender;
	}
	public void setPhone(long Phone){
		this.phone=phone;
	}
	public long getPhone(){
		return this.phone;
	}
	public void setAdress(String adress){
		this.address=adress;
	}
	public String getAdress(){
		return this.address;
	}
	public void setEmail(String email){
		this.email=email;
	}
	public String getEmail(){
		return this.email;
	}
	public void Play(){
		System.out.println("學生玩遊戲");
	}
	public void Eat(){
		System.out.println("學生吃東西");
	}
	public void Drink(){
		System.out.println("學生喝東西");
	}
}
class Manger{
	private Student[] a;
	/*public Manger(Student[] a){
		this.a=a;
	}*/
	public void SeachName(Student[] stu2){
		String str="張三";
		for(int i=0;i<stu2.length;i++){
			boolean b1=false;
			
			if(stu2[i].getName().equals(str)){
				System.out.println("根據學生姓名查詢的資訊為:"+stu2[i].getName()+","+stu2[i].getAge());
				b1=true;
			}
			if(i==stu2.length&&b1==false){
				System.out.println("查詢結果不存在,請稍後查詢");
			}
		}
	}
	public void SeachAge(Student[] stu2){
		for(int i=0;i<stu2.length;i++){
			boolean b1=false;
			if(stu2[i].getAge()==12){
				System.out.println("根據學生年齡查詢的資訊為:"+stu2[i].getName()+","+stu2[i].getAge());
				b1=true;
			}
			if(i==stu2.length&&b1==false){
				System.out.println("查詢結果不存在,請稍後查詢");
			}
		}
	}
}
public class Test1 {
	public static void main(String[] args){
		Student stu1=new Student();
		stu1.setName("張三");
		stu1.setAge(12);
		stu1.setGender("fafas");
		stu1.setAdress("fdasfa");
		stu1.setPhone(1233432542);
		stu1.setEmail("
[email protected]
"); System.out.println("學生姓名:"+stu1.getName()); System.out.println("學生年齡:"+stu1.getAge()); System.out.println("學生的地址:"+stu1.getAdress()); stu1.Play(); stu1.Eat(); stu1.Drink(); Student[] stu2=new Student[3]; Scanner in; in=new Scanner(System.in); for(int i=0;i<stu2.length;i++){ //臨時的stuI一定要在for裡面定義,否則StuI賦值給stu2[i]之後 //因為指向相同,stu2[i]會不斷的重寫,最後出現所有的stu2值全部一樣; Student StuI=new Student(); //給成員變數初始化 System.out.println("請輸入第"+(i+1)+"個學生資訊"); System.out.println("姓名:"); StuI.setName(in.next()); StuI.setAge(Integer.valueOf(in.next())); StuI.setPhone(Integer.valueOf(in.next())); stu2[i]=StuI; } for(int i=0;i<stu2.length;i++){ System.out.println(stu2[i].getName()); } /* * 下面的程式碼因為值為null,所以出現空指標異常 * */ /*stu2[0].setName("李四"); stu2[0].setAge(12); stu2[0].setAdress("asd"); stu2[0].setPhone(s12432523); stu2[0].setEmail("dasdasdsad"); stu2[1].setName("張三"); stu2[1].setAge(15); stu2[1].setAdress("dasfa"); stu2[1].setPhone(124432543); stu2[1].setEmail("dasfasgsg"); stu2[2].setName("王五"); stu2[2].setAge(18); stu2[2].setAdress("asfga"); stu2[2].setPhone(1241232523); stu2[2].setEmail("asdfasfasfasf");*/ Manger m=new Manger(); m.SeachAge(stu2); m.SeachName(stu2); //使用帶所有引數的構造器 Student stu3=new Student("王五",15,"fafgas",124125,"dasfaga","124151521"); System.out.println("學生姓名:"+stu3.getName()+"學生的年齡為:"+stu3.getAge()+"學生的電話號碼為:"+stu3.getPhone()); } }
3.定義普通人、老師、班主任、學生、學校這些類,提供適當的成員變數、方法用於描述其內部資料和行為特徵,並提供主類使之執行。要求有良好的封裝性,將不同類放在不同包下面,增加文件註釋,生成API文件。

1)首先定義Person類,定義其成員變數,定義方法得到成員變數的值

public class Person {
	private String name;
	public String getName(){
		return this.name;
	}
	public void setName(String name){
		this.name=name;
	}
}
2)定義Student類,繼承父類Person,呼叫得到成員變數name的函式
public class Student extends Person{
    Student(String name){
        //其中this可以省略
        this.setName(name);
    }
    public void study(School s){
        System.out.println("學生"+this.getName()+"在"+s.getSchoolName()+"上課");
    }
}
3)定義Teacher類,繼承父類Person,呼叫獲得成員變數name的方法
public class Teacher extends Person {
	Teacher(){
	}
	Teacher(String name){
		setName(name);
	}
	//老師給某同學佈置作業
	public void setHomework(Student s){
		System.out.println(this.getName()+"老師給學生"+s.getName()+"佈置作業");
	}
}
3)定義班主任類MainTeacher類,繼承Teacher類。
public class MainTeacher extends Teacher {
	MainTeacher(String name){
		setName(name);
	}
	public void joinCompetition(Student s,School sc){
		//班主任要求某學生參加某學校的什麼比賽
		System.out.println(this.getName()+"班主任要求學生"+s.getName()+"參加"+sc.getSchoolName()+"的"+sc.getCompetition());
	}
}
4)定義學校類School,建立得到學校類中的方法學校的名字schoolName(),獲得參加什麼比賽,比賽名字的方法getCompetition()
public class School {
	private String schoolName;
	private String competition;
	School(String name){
		setSchoolName(name);
	}
	public String getCompetition(){
		return competition;
	}
	public void setCompetition(String competition){
		this.competition=competition;
	}
	public void setSchoolName(String name){
		this.schoolName=name;
	}
	public String getSchoolName(){
		return schoolName;
	}
}	




相關推薦

面向物件學習

1.編寫一個學生類,提供name、age、gender、phone、address、email成員變數,且為每個成員變數提供setter、getter方法。為學生提供預設的構造器和帶所有成員變數的構造器。為學生提供方法,用於描繪吃、喝、玩、睡等行為。 2.利用第1題定義的S

python學習 叠代器 生成器 面向過程編程

break 對象 end 面向過程編程 捕捉 捕捉異常 就會 python學習 因此 1:什麽是叠代 可以直接作用於for循環的對象統稱為可叠代對象(Iterable)。 可以被next()函數調用並不斷返回下一個值的對象稱為叠代器(Iterator

Linux學習課-文件管理基本概念及相關部分指令

sys 工作 mic ros ech num adding windows系統 bre Linux學習第四節課------------------------------------------

python面向物件學習)繼承

目錄 1. 單繼承 1.1 繼承的概念、語法和特點 1.2 方法的重寫 1.3 父類的 私有屬性 和 私有方法 2. 多繼承 2.1 多繼承的使用注意事項 2.2 新式類與舊式(經典)類 1. 單繼承 1.1 繼承的概念、

javascript面向物件系列篇——OOP中的常見概念

前面的話   面向物件描述了一種程式碼的組織結構形式——一種在軟體中對真實世界中問題領域的建模方法。本文將從理論層面,介紹javascript面向物件程式程式(OOP)中一些常見的概念 物件   所謂物件,本質上就是指事物(包括人和物)在程式設計語言中的表現形式。這裡的事物可以是任何東西(如某個客觀

BurpSuite學習--Spider

一.Spider的介紹 Burp Spider 是一個對映 web 應用程式的工具。它使用多種智慧技術對一個應用程式的內容和功能進行全面的清查。 通過跟蹤 HTML 和 JavaScript 以及提交的表單中的超連結來爬行目標應用程式。 結果會在站點地圖中以樹和表的形式顯示出來,提供了一個清楚並非常詳細

JAVAscript學習筆記 js句柄監聽事件 (原創) 參考js使用表

必須 htm -c eve property blog uncaught event add <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

學習HTML .插入圖像

htm 分享 info pan tro meta 標題 log doctype 學習HTML 第四節.插入圖像 全是文字的網頁太枯燥了吧,我們來搞個圖片上去! <!DOCTYPE html><html><head><meta cha

Git系統從0到1的完整學習歷程((3) Git分支管理)

主要跟著https://gitee.com/progit/index.html來學習的,知識點來自這裡,新增自己的理解和標記。 檢視分支 git branch 命令不僅僅能建立和刪除分支,如果不加任何引數,它會給出當前所有分支的清單: $ git branch is

Git系統從0到1的完整學習歷程((2) Git分支操作)

主要跟著https://gitee.com/progit/index.html來學習的,知識點來自這裡,新增自己的理解和標記。 分支的新建與合併 現在讓我們來看一個簡單的分支與合併的例子,實際工作中大體也會用到這樣的工作流程: 開發某個網站。 為實現某個新的需求,建立一個

Git系統從0到1的完整學習歷程((1) Git分支原理學習

分支學習 https://gitee.com/progit/3-Git-%E5%88%86%E6%94%AF.html+自己的理解 理解分支的概念並熟練運用後,你才會意識到為什麼 Git 是一個如此強大而獨特的工具,並從此真正改變你的開發方式。     

php學習筆記:--php中的運算子和流程控制

PHP的運算子、流程控制和其他語言的運算子一樣,沒什麼特別的,這裡不再累贅。     特別的運算子: .=             $a.=$b

Spring學習(穀粒學院spring4課程) 基於註解配置bean

元件掃描(component scanning):  Spring 能夠從 classpath 下自動掃描, 偵測和例項化具有特定註解的元件. 特定元件包括: @Component: 基本註解, 標識了一個受 Spring 管理的元件 @Respository: 標識

學校學習ios教程筆記,swift中可變陣列和不可變陣列以及元組的概念與操作

// //  main.swift //  Swift第四節 // //  Created by lanou on 16/10/24. //  Copyright (c) 2016年 lanou. A

Spring入門學習(自動裝配)

Spring入門學習 第四節 自動裝配 自動裝配 分別建立三個類Address.java,Car.java,Person.java 其中Perosn類包含有Address和Car的屬性package com.fafa.spring.au

:詳細講解Java中的類和麵向物件思想

前言大家好,我是 Vic,今天給大家帶來詳細講解Java中的類和麵向物件思想的概述,希望你們喜歡類和麵向物件在Java中怎樣理解物件,建立物件和引用;什麼是引用,對於基礎學習的同學,要深入瞭解引用。示例:String str = new String(); ;其中str為引用

Linux學習筆記

關鍵詞搜索 刪除文件 技術分享 atime 操作 linux 復制文件 nbsp alt touch命令可修改文件atime和mtime,不能修改ctime。可用於修改文件後將修改時間改回之前修改時間。 mkdir命令用於創建空白的目錄,格式為“mkdir [

Linux學習

linux5-1-1查看系統負載命令命令 w或命令uptimeload average :a(1分鐘內系統的平均負載 ),b(5分鐘內),c(15分鐘內)a:一分鐘內有多少個進程使用cpucat /proc/cpuinfo 顯示的processor的值就是cpu核數a>核數 負載偏高5-1-2vmsta

JAVA學習十五課 — 其它對象API(一)System、Runtime、Math類

大整數 協調 1.5 tint ava 字符串 垃圾 void lol 一、System類 1. static long currentTimeMillis() 返回以毫秒為單位的當前時間。 實際上:當前時間與協調世界時 1970 年 1 月 1 日午夜之間的時間差(

(筆記)斯坦福機器學習講--牛頓法

ron 並不會 initial ant 結果 c函數 情況 對數 width 本講內容 1. Newton‘s method(牛頓法) 2. Exponential Family(指數簇) 3. Generalized Linear Models(GLMs)(廣義線性模型)