打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
8.oop-多态

一.继承
1.定义:子类继承父类,会继承父类的属性和方法
2.语法:extends关键字 子类 extends 父类
3.特点:java中的继承是单一继承,子类只能继承一个父类,但是父类可以有多个子类
4.用途:可以将共性的部分写到父类中,子类保留自己的个性特征
5.哪些不能被继承:父类的构造方法,私有的属性和方法

二.方法的重写
1.必须是子类重写父类的方法,所以是发生在两个类中
2.方法的签名必须一致,访问修饰符可以不一样,但子类不能严于父类

三.继承后的代码执行顺序
1.父类的属性--父类的构造方法--子类的属性--子类的构造方法

四.supper关键字
1.定义:代表父类的引用
2.作用:可以调用父类的属性和方法,包括构造方法
3.注意:如果调用父类构造方法,必须是在子类构造方法中的第一句

五.final关键字
1.定义:最终版本
2.可以修饰:类,属性,方法
3.作用:
修饰类:该类不能被继承
修饰属性:叫常量,声明时必须赋值,并且不能改变.常量的命名规则是全部大写
修饰方法:不能被重写

六.多态
1.一种事务的多种形态。
2.实现步骤:
a.子类继承父类,重写父类的方法
b.父类作为形参来代替所有的子类
c.在调用时,用父类的类型指向子类的对象

七.例子

1.请设计多个类,程序员,医生,演说家,歌手四个类
设计相关属性和职业行为,并且看怎么优化设计
共性的属性有:姓名,年龄,性别,职业
共性的方法有:自我介绍,吃饭,睡觉
特性的方法有:各自如何赚钱
特有的属性:各自特有的属性

2.人物采访:
要求:主持人主持一档节目,叫做人物访谈,可以采访各种职业的人
采访过程:
1.主持人先报广告赞助商
2.被采访人自我介绍
3.被采访人介绍自己的赚钱方式
4.主持人说下集预告
设计程序,要求主持人可以采访任何类型的职业人,采访流程不变。

加一个新的采访职业。老师

package com.demo1106;/** * 职业案例 * @author allen * */public class Profession {	public static void main(String[] args) {		Programmer p = new Programmer();		p.coding();	}}class Person {	//姓名,年龄,性别,职业	String name;	int age;	String sex;	String profession;	final String HELLO = "你好";//常量,一旦声明就必须赋值,并且不能被修改	static{		System.out.println("我是父类静态");	}	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("我是子类静态");	}	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("芙蓉姐姐", "网红", "海文公司");//		父类的类型指向子类的对象		People p = new Doctorer("某某某", "主任医师", "长沙湘雅附二");		cp.doProgram(p);	}	}class Compere{	String name;		//主持节目	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//	}}//第一次优化//将被采访人的自己的行为规范到被采访人类中//将该类作为形参传递给主持人的主持节目方法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("我赚钱的方式是潜规则上位");	}}//第二次优化://1可以将所有被采访者抽取他们的共性到一个父类中。//2被采访者可以继承这个父类并且重写父类中的方法//3可以将主持人中的主持方法参数由原来的被采访者改为他们的父类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.请设计多个类,程序员,医生,演说家,歌手四个类设计相关属性和职业行为,并且看怎么优化设计共性的属性有:姓名,年龄,性别,职业共性的方法有:自我介绍,吃饭,睡觉特性的方法有:各自如何赚钱特有的属性:各自特有的属性 *  */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 "岁" ",职业是" 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.人物采访:要求:主持人主持一档节目,叫做人物访谈,可以采访各种职业的人采访过程:	  1.主持人先报广告赞助商      2.被采访人自我介绍      3.被采访人介绍自己的赚钱方式      4.主持人说下集预告设计程序,要求主持人可以采访任何类型的职业人,采访流程不变。加一个新的采访职业。老师 */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,"医生","院长");		h.interview(p1);				People p2=new Teacher1("曹操",111,"老师","三国军事学院");		h.interview(p2);			}}class Host{	String name="陈鲁豫";		public void interview(People p)	{		System.out.println("我是主持人" name ",本节目由五粮液冠名播出");		p.introduce1();		p.makemoney();		System.out.println("本期节目到这里就结束了,感谢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 "岁," "我的职业是" 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 "岁," "我的职业是" profession ",我所在的学校是" school);	}	@Override	public void makemoney()	{		System.out.println("我是通过教学生知识赚钱的");	}}

  

八.作业

做一个学员管理系统
功能:1.添加学员
2.查看学员信息
3.删除学员
4.修改学员

思路:创建学员对象
创建学员对象数组
每个功能对应一个方法,可以反复使用


提示:

---------------------------------
欢迎使用学员管理
---------------------------------
功能选择:
1.添加学员
2.查看学员信息
3.删除学员
4.修改学员
请选择:1
添加学员:
姓名:杜典
年龄:16
性别:女
电话:15232654565
籍贯:长沙
添加成功!
是否继续?y/n:y

功能选择:
1.添加学员
2.查看学员信息
3.删除学员
4.修改学员
请选择:2
姓名 年龄 性别 电话 籍贯
杜典 16 女 152656545 长沙
李祥 18 男 154854623 岳阳
是否继续?y/n:y

功能选择:
1.添加学员
2.查看学员信息
3.删除学员
4.修改学员
请选择:3
请输入要删除的学员姓名:李祥
删除成功!
是否继续?y/n:y

功能选择:
1.添加学员
2.查看学员信息
3.删除学员
4.修改学员
请选择:4
请输入要修改的学员姓名:杜典
姓名:哈哈
年龄:88
性别:女
电话:15232654565
籍贯:常德
修改成功!
是否继续?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("是否继续?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.icode9.com/content-4-110201.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java入門試題
多态的概述和前提条件
java---- 封装,接口,继承,覆盖,构造过程,多态,static、this、super、final用法
Java笔试题及答案
java编程、java学习:深刻理解Java编程的7个例子
类的初始化顺序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服