日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

8.oop-多態(tài)

 印度阿三17 2019-02-06

一.繼承
1.定義:子類繼承父類,會繼承父類的屬性和方法
2.語法:extends關鍵字 子類 extends 父類
3.特點:java中的繼承是單一繼承,子類只能繼承一個父類,但是父類可以有多個子類
4.用途:可以將共性的部分寫到父類中,子類保留自己的個性特征
5.哪些不能被繼承:父類的構造方法,私有的屬性和方法

二.方法的重寫
1.必須是子類重寫父類的方法,所以是發(fā)生在兩個類中
2.方法的簽名必須一致,訪問修飾符可以不一樣,但子類不能嚴于父類

三.繼承后的代碼執(zhí)行順序
1.父類的屬性--父類的構造方法--子類的屬性--子類的構造方法

四.supper關鍵字
1.定義:代表父類的引用
2.作用:可以調用父類的屬性和方法,包括構造方法
3.注意:如果調用父類構造方法,必須是在子類構造方法中的第一句

五.final關鍵字
1.定義:最終版本
2.可以修飾:類,屬性,方法
3.作用:
修飾類:該類不能被繼承
修飾屬性:叫常量,聲明時必須賦值,并且不能改變.常量的命名規(guī)則是全部大寫
修飾方法:不能被重寫

六.多態(tài)
1.一種事務的多種形態(tài)。
2.實現(xiàn)步驟:
a.子類繼承父類,重寫父類的方法
b.父類作為形參來代替所有的子類
c.在調用時,用父類的類型指向子類的對象

七.例子

1.請設計多個類,程序員,醫(yī)生,演說家,歌手四個類
設計相關屬性和職業(yè)行為,并且看怎么優(yōu)化設計
共性的屬性有:姓名,年齡,性別,職業(yè)
共性的方法有:自我介紹,吃飯,睡覺
特性的方法有:各自如何賺錢
特有的屬性:各自特有的屬性

2.人物采訪:
要求:主持人主持一檔節(jié)目,叫做人物訪談,可以采訪各種職業(yè)的人
采訪過程:
1.主持人先報廣告贊助商
2.被采訪人自我介紹
3.被采訪人介紹自己的賺錢方式
4.主持人說下集預告
設計程序,要求主持人可以采訪任何類型的職業(yè)人,采訪流程不變。

加一個新的采訪職業(yè)。老師

package com.demo1106;
/**
 * 職業(yè)案例
 * @author allen
 *
 */
public class Profession {
	public static void main(String[] args) {
		Programmer p = new Programmer();
		p.coding();
	}
}

class Person {
	//姓名,年齡,性別,職業(yè)
	String name;
	int age;
	String sex;
	String profession;
	final String HELLO = "你好";//常量,一旦聲明就必須賦值,并且不能被修改
	static{
		System.out.println("我是父類靜態(tài)");
	}
	public Person() {//子類繼承父類,構造子類必先構造父類
		System.out.println("我是父類構造方法");
	}
	
	public void eat(){
		System.out.println("吃米飯");
	}
	
	public void sleep(){
		System.out.println("睡覺八小時");
	}
	
	public void intrduce(){
		System.out.println("我叫" name);
	}
}

class Programmer extends Person{
	static{
		System.out.println("我是子類靜態(tài)");
	}
	public Programmer() {
		super();
		System.out.println("我是子類構造方法");
	}
	
	public void coding(){
		super.intrduce();
		System.out.println("我賺錢的方法時:我會編碼");
	}
	@Override//這個叫注解  此處的含義是告訴java這個方法是重寫父類的方法,他有檢查功能
	public void sleep(){
		System.out.println("我要加班,睡覺4個小時");
	}
	
}

class Doctor extends Person{
	String level;//級別
	
	public void operation(){
		System.out.println("我賺錢的方式:做外科手術");
	}
	@Override
	public void eat(){
		System.out.println("我吃面,還不用面條鮮");
	}
}

  

?

package com.demo1106;
/**
 * 任務采訪案例
 */
public class Interview {
	public static void main(String[] args) {
		Compere cp = new Compere();
//		People p = new Actor("芙蓉姐姐", "網(wǎng)紅", "海文公司");
//		父類的類型指向子類的對象
		People p = new Doctorer("某某某", "主任醫(yī)師", "長沙湘雅附二");
		cp.doProgram(p);
	}
	
}

class Compere{
	String name;
	
	//主持節(jié)目
	public void doProgram(People p){
		//1234
		System.out.println("我是主持人:" name ",感謝CCTV,所有TV");
		p.introduce();
		p.makeMoney();
		System.out.println("我是主持人,感謝收看本級,下期再見");
	}
	
//	public void doProgramToActor(Actor a){
//		//1234
//		System.out.println("我是主持人:" name ",感謝CCTV,所有TV");
//		a.intrduce();
//		a.makeMoney();
//		System.out.println("我是主持人,感謝收看本級,下期再見");
//	}
//	
//	public void doProgramToLawyer(){
//		//1234
//	}
}

//第一次優(yōu)化
//將被采訪人的自己的行為規(guī)范到被采訪人類中
//將該類作為形參傳遞給主持人的主持節(jié)目方法
class Doctorer extends People{
	//String name;來源于父類
	String level;//自己值留下特征
	//String company;//就職單位
	
	
	@Override
	public void introduce(){
		System.out.println("我是:" name ",我的級別是:" level ",我就職于:" company);
	}
	public Doctorer(String name,String level,String company) {
		this.name = name;
		this.level = level;
		this.company = company;
	}
	@Override
	public void makeMoney(){
		System.out.println("我賺錢的方式是做手術做一半要紅包");
	}
}

class Actor extends People{
//	private String name;
	private String type;
//	private String company;
	
	public Actor(String name, String type, String company) {
		this.name = name;
		this.type = type;
		this.company = company;
	}
	@Override
	public void introduce(){
		System.out.println("我是:" name ",我就職于:" company);
	}
	@Override
	public void makeMoney(){
		System.out.println("我賺錢的方式是潛規(guī)則上位");
	}
}



//第二次優(yōu)化:
//1可以將所有被采訪者抽取他們的共性到一個父類中。
//2被采訪者可以繼承這個父類并且重寫父類中的方法
//3可以將主持人中的主持方法參數(shù)由原來的被采訪者改為他們的父類
class People{
	String name;
	String company;
	
	public void introduce(){
		
	}
	
	public void makeMoney(){
		
	}
}

  

package com.demo1106;
//繼承的語法案例
public class Demo{
	public static void main(String[] args) {
		Children c = new Children();
		c.name = "張三瘋";
		c.eat();
	}
}

class Father {
	String name;
	int age;
	String sex;
	
	public void eat(){
		System.out.println("我喜歡吃米飯");
	}
	
	public void run(){
		System.out.println("每分鐘跑200米");
	}
}

class Children extends Father{
	String characate;
	
	public void play(){
		System.out.println("我們喜歡擼啊擼");
	}
}

  

/*
 * 1.請設計多個類,程序員,醫(yī)生,演說家,歌手四個類
設計相關屬性和職業(yè)行為,并且看怎么優(yōu)化設計
共性的屬性有:姓名,年齡,性別,職業(yè)
共性的方法有:自我介紹,吃飯,睡覺
特性的方法有:各自如何賺錢
特有的屬性:各自特有的屬性
 * 
 */
package com.class1106;


public class Class01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Person pg=new Programmer();
		pg.introduce();
		pg.eat();
		pg.sleep();
		pg.getmoney();
		
	}

}

class Person{
	String name;
	int age;
	String sex;
	String profession;
	
	public void introduce(){
		System.out.println("我是" name ",性別是" sex ",今年" age "歲" ",職業(yè)是" profession);
	}
	public void eat(){
		System.out.println("我會吃飯");
	}
	public void sleep(){
		System.out.println("我還會睡覺");
	}
	public void getmoney()
	{
		
	}
}

class Programmer extends Person{
	String thought;
	public void getmoney()
	{
		System.out.println("我通過寫代碼賺錢");
	}
}

class Doctor extends Person{
	String cloth;
	public void getmoney(){
		System.out.println("我通過給人治病賺錢");
	}
}

class Speaker extends Person{
	String eloquence;
	public void getmoney(){
		System.out.println("我通過演講賺錢");
	}
}

class Singer extends Person{
	String sound;
	public void getmoney()
	{
		System.out.println("我通過唱歌賺錢");
	}
}

  

/*
 * 2.人物采訪:
要求:主持人主持一檔節(jié)目,叫做人物訪談,可以采訪各種職業(yè)的人
采訪過程:
	  1.主持人先報廣告贊助商
      2.被采訪人自我介紹
      3.被采訪人介紹自己的賺錢方式
      4.主持人說下集預告
設計程序,要求主持人可以采訪任何類型的職業(yè)人,采訪流程不變。
加一個新的采訪職業(yè)。老師
 */
package com.class1106;

public class Class02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Host h=new Host();
		People p1=new Doctor1("華佗",100,"醫(yī)生","院長");
		h.interview(p1);
		
		People p2=new Teacher1("曹操",111,"老師","三國軍事學院");
		h.interview(p2);
		
	}
}

class Host{
	String name="陳魯豫";
	
	public void interview(People p)
	{
		System.out.println("我是主持人" name ",本節(jié)目由五糧液冠名播出");
		p.introduce1();
		p.makemoney();
		System.out.println("本期節(jié)目到這里就結束了,感謝cctv,我們下期再見");
	}
}

class People{
	String name;
	int age;
	String profession;
	
	public void introduce1()
	{
		
	}
	public void makemoney()
	{
		
	}	
}

class Doctor1 extends People{
	String level;
	public Doctor1(String name,int age,String profession,String level){
		this.name=name;
		this.age=age;
		this.profession=profession;
		this.level=level;
	}
	public void introduce1()
	{
		System.out.println("我是" name ",今年" age "歲," "我的職業(yè)是" profession ",我的級別是" level);
	}
	public void makemoney()
	{
		System.out.println("我是通過做手術賺錢的");
	}
}
class Teacher1 extends People{
	String school;
	public Teacher1(String name,int age,String profession,String school)
	{
		this.name=name;
		this.age=age;
		this.profession=profession;
		this.school=school;
	}
	
	@Override
	public void introduce1()
	{
		System.out.println("我是" name ",今年" age "歲," "我的職業(yè)是" profession ",我所在的學校是" school);
	}
	@Override
	public void makemoney()
	{
		System.out.println("我是通過教學生知識賺錢的");
	}
}

  

八.作業(yè)

做一個學員管理系統(tǒng)
功能:1.添加學員
2.查看學員信息
3.刪除學員
4.修改學員

思路:創(chuàng)建學員對象
創(chuàng)建學員對象數(shù)組
每個功能對應一個方法,可以反復使用


提示:

---------------------------------
歡迎使用學員管理
---------------------------------
功能選擇:
1.添加學員
2.查看學員信息
3.刪除學員
4.修改學員
請選擇:1
添加學員:
姓名:杜典
年齡:16
性別:女
電話:15232654565
籍貫:長沙
添加成功!
是否繼續(xù)?y/n:y

功能選擇:
1.添加學員
2.查看學員信息
3.刪除學員
4.修改學員
請選擇:2
姓名 年齡 性別 電話 籍貫
杜典 16 女 152656545 長沙
李祥 18 男 154854623 岳陽
是否繼續(xù)?y/n:y

功能選擇:
1.添加學員
2.查看學員信息
3.刪除學員
4.修改學員
請選擇:3
請輸入要刪除的學員姓名:李祥
刪除成功!
是否繼續(xù)?y/n:y

功能選擇:
1.添加學員
2.查看學員信息
3.刪除學員
4.修改學員
請選擇:4
請輸入要修改的學員姓名:杜典
姓名:哈哈
年齡:88
性別:女
電話:15232654565
籍貫:常德
修改成功!
是否繼續(xù)?y/n:y

功能選擇:
1.添加學員
2.查看學員信息
3.刪除學員
4.修改學員
請選擇:2
姓名 年齡 性別 電話 籍貫
哈哈 88 女 152656545 長沙
李祥 18 男 152454544 常德

package com.class1104;

import java.util.Scanner;

public class Test1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//菜單各種詢問,各種調用
		Start st=new Start();
		int s1;
		String s2;
		StuManager sm=new StuManager();
		do{
			st.select();
			Scanner sc=new Scanner(System.in);
		
			System.out.print("請選擇:");
			s1=sc.nextInt();
	
			switch(s1)
			{
			case 1:
				System.out.println("添加學員:");
				sm.addStu();
				System.out.println("添加成功!");
				break;
			case 2:
				sm.queryStu();
				break;
			case 3:
				sm.deleteStu();
				break;
			case 4:
				sm.updateStu();
				break;
			default:
				System.out.println("輸入錯誤");
				break;
			}
			System.out.print("是否繼續(xù)?y/n:");
			s2=sc.next();
			System.out.println();
		}while(s2.equals("y"));
		
		
		

		

	}
}

class Start{
	public Start()
	{
		for(int i=0;i<25;i  )
		{
			System.out.print("-");
		}
		System.out.println();
		System.out.println("               歡迎使用學員管理");
		for(int i=0;i<25;i  )
		{
			System.out.print("-");
		}
		System.out.println();	
	}
	public void select()
	{
		System.out.println("功能選擇:");
		System.out.println("    1.添加學員");
		System.out.println("    2.查看學員信息");
		System.out.println("    3.刪除學員");
		System.out.println("    4.修改學員");
	}
}

class Student{
	// 各種屬性。要求封裝
	private String name;
	private int age;
	private String sex;
	private String phone;
	private String place;
	
	public void setName(String name)
	{
		this.name=name;
	}
	public String getName()
	{
		return name;
	}
	public void setAge(int age)
	{
		this.age=age;
	}
	public int getAge()
	{
		return age;
	}
	public void setSex(String sex)
	{
		this.sex=sex;
	}
	public String getSex()
	{
		return sex;
	}
	public void setPhone(String phone)
	{
		this.phone=phone;
	}
	public String getPhone()
	{
		return phone;
	}
	public void setPlace(String place)
	{
		this.place=place;
	}
	public String getPlace()
	{
		return place;
	}
}

// 學員管理類
class StuManager{
	Student stu[]=new Student[50];
	Scanner sc1=new Scanner(System.in);
	public void addStu()
	{
		Student stu1=new Student();
		for(int i=0;i<stu.length;i  )
		{
			if(stu[i]==null)
			{
				stu[i]=stu1;
				break;
			}
			
		}
		System.out.print("姓名:");
		stu1.setName(sc1.next());
		System.out.print("年齡:");
		stu1.setAge(sc1.nextInt());
		System.out.print("性別:");
		stu1.setSex(sc1.next());
		System.out.print("電話:");
		stu1.setPhone(sc1.next());
		System.out.print("籍貫:");
		stu1.setPlace(sc1.next());
		
	}
	public void queryStu()
	{
		System.out.print("姓名" "\t");
		System.out.print("年齡" "\t");
		System.out.print("性別" "\t");
		System.out.print("電話" "\t");
		System.out.print("籍貫" "\t");
		
		for(int i=0;i<stu.length;i  )
		{
			if(stu[i]!=null)
			{
				System.out.println();
				System.out.print(stu[i].getName() "\t");
				System.out.print(stu[i].getAge() "\t");
				System.out.print(stu[i].getSex() "\t");
				System.out.print(stu[i].getPhone() "\t");
				System.out.print(stu[i].getPlace() "\t");
			}
		}
	}
	public void deleteStu()
	{
		System.out.print("請輸入要刪除的學員姓名:");
	    String name1=sc1.next();
	    boolean b1=false;
		for(int i=0;i<stu.length;i  )
		{
			if(stu[i]!=null)
			{
				if(stu[i].getName().equals(name1))
				{
					b1=true;
					stu[i]=null;
					int j=i;
					while(j<stu.length-1)
					{
						stu[j]=stu[j 1];
						j  ;
						if((j 1)==stu.length-1)
						{
							stu[j 1]=null;
						}
					}
					i--;
				}
			}
		}
		if(b1)
		{
			System.out.println("刪除成功!");
		}else{
			System.out.println("未找到該學員!");
		}
	}
	public void updateStu()
	{
		System.out.print("請輸入要修改的學員姓名:");
		String name2=sc1.next();
		boolean b2=false;
		for(int i=0;i<stu.length;i  )
		{
			if(stu[i]!=null)
			{
				if(stu[i].getName().equals(name2))
				{
					b2=true;
					System.out.print("姓名:");
					stu[i].setName(sc1.next());
					System.out.print("年齡:");
					stu[i].setAge(sc1.nextInt());
					System.out.print("性別:");
					stu[i].setSex(sc1.next());
					System.out.print("電話:");
					stu[i].setPhone(sc1.next());
					System.out.print("籍貫:");
					stu[i].setPlace(sc1.next());
				}
			}
		}
		if(b2)
		{
			System.out.println("修改成功!");
		}else{
			System.out.println("未找到該學員!");
		}
	}
}

  

?

來源:http://www./content-4-110201.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多