多态,父类引用对象,抽象关键字及接口基础内容和练习

一、多态

1,多态的概述及其代码的体现

概述:事物的多种状态

前提:

        要有继承关系

       要有方法重写

        要有父类引用子类对象

代码演示:

        Animal a=new  cat();

        a.eat();

多态中的成员访问特点

多态中的成员变量:

        编译看左边,运行看左边;

多态中的成员方法:

        编译看左边,运行看右边

静态方法

        编译看左边,运行看左边

(静态和类相关,算不上重写,所以访问范左边)

多态无法调用子类特有行为

arr【i】 =arr[i].replaceAll(" 空",“满”);

将字符串中指定内容替换成目标内容

String str=“1010满”;

system.out.println(str.contains("满"));

判断字符串元素。

 多态的好处和弊端(父类引用子类对象)

好处:

1.提高了代码的维护性(继承保证)

2.提高了代码的扩展性(多态保证)

弊端:

不能使用子类特有的属性和行为

二、抽象类概述和特点

概述:看不懂的

特点:
        

  抽象类和抽象方法都必须使用关键字abstract来修饰

abstract  class 类名{}

public abstract void show(){}

抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类

抽象类不能实例化,如果抽象类需要生成对象,那么要有子类协助实例化(父类引用子类对象)(子类必须是一个非抽象类)

抽象类的子类

要么是抽象类(意义不大)

要么是非抽象类:需要重写抽象类中所有的抽象类

抽象类的成员特点

成员变量:可以是变量也可以是常量 abstract无法修饰

成员方法:可以有成员方法

构造方法:可以有构造方法,用于子类访问父类数据的初始化

静态方法:有静态方法

抽象方法:可以有抽象方法,也可以不写抽象方法

3、接口的概述及其特点

概述:

1.广义:对外提供规则的就是接口

2.狭义:指java中interface就是接口

特点:

1.接口用关键字interface表示

interface 接口名{}

2.子类实现接口implements表示

class 类名 implements 接口名{};

3.接口不能实例化

按照多态的方式(父类引用子类对象)来实例化

接口的子类

可以是抽象类(意义不大)

可以是具体类,重写接口中所有的抽象方法(推荐方案)

静态类只能用接口调用。

接口成员的特点

成员变量:只能是常量,而且是静态的公开的(位置不固定)

public static final int a=10;

构造方法:接口中没有构造方法

成员方法:只能是抽象方法

                       默认修饰类  public abstract

                        (建议手动给出)

实例练习

数组,面向对象封装,继承,多态,接口

请对int [] arr={1,3,5}进行增删改查四大功能,

每个功能分别用一种方法实现。通过用户调用。对数组进行功能实现。

增:得到的是{1,2,3,4,5}

删:得到的是{1}

改:得到的是把{1改成10}

查:获得数组里面的所有数据。

package com.demo1.cn;

public interface Demo {
	int[] show(int[] arr);
}


import java.util.Arrays;
public class Demo1 implements Demo {
		
	public int [] show(int []arr) {
		int[]arr1=new int[5];
		System.arraycopy(arr, 0, arr1, 0, arr.length);
		arr1[3]=2;
		arr1[4]=4;
		Arrays.sort(arr1);
		return arr1;
	}


}

package com.demo1.cn;

import java.util.Arrays;

public class Demo2 implements Demo{

	@Override
	public int[] show(int[] arr) {
		// TODO Auto-generated method stub
		int arr1[]=new int[1];
		arr1[0]=arr[0];
		return arr1;
	}
}


package com.demo1.cn;

public class Demo3 implements Demo {

	@Override
	public int[] show(int[] arr) {
		// TODO Auto-generated method stub
		arr[0]=10;
		return arr;
	}

}


package com.demo1.cn;

import java.util.Arrays;

public class Demo4 implements Demo{

	@Override
	public int[] show(int[] arr) {
		// TODO Auto-generated method stub
		System.out.println(Arrays.toString(arr));
		return null;
	}

}

package com.demo1.cn;

import java.util.Arrays;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[]= {1,3,5};
		Demo1 d1=new Demo1();
		int []arr2=d1.show(arr);
		System.out.println(Arrays.toString(arr2));
		Demo2 d2=new Demo2();
		int []arr3=d2.show(arr2);
		System.out.println(Arrays.toString(arr3));
		Demo3 d3=new Demo3();
		int []arr4=d3.show(arr3);
		System.out.println(Arrays.toString(arr4));
		Demo4 d4=new Demo4();
		d4.show(arr2);
	}

}

 

 练习二:简易酒店管理系统

package com.demo.cn;

import java.util.Arrays;
import java.util.Scanner;

public class test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[][] hotel=createHotel();
//		for (int i = 0; i < hotel.length; i++) {
//			System.out.println(Arrays.toString(hotel[i]));
//		}
		sayHello();
		//为客户提供服务
		service(hotel);
	}

	
	private static void service(String[][] hotel) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		while(true){
			System.out.println("请输入你想执行的功能!");
		String command=	scanner.nextLine();
			if("select".equals(command)){
				select(hotel);
			}else if("in".equals(command)) {
				in(hotel);
			}else if("out".equals(command)) {
				out(hotel);
			}else if("change".equals(command)) {
				change(hotel);
			}else if("exit".equals(command)) {
				System.out.println("滚球吧,叼毛");
				return;
			}else {
				System.out.println("输入错误!");
			}
		}
	
	
	}


	private static void change(String[][] hotel) {
		// TODO Auto-generated method stub
		Scanner scanner =new Scanner(System.in);
		System.out.println("请输入之前的房间");
		int beforHN=scanner.nextInt();
		int beforLC=beforHN/100-1;
		int beforFJ=beforHN%100-1;
		if(beforHN<0||beforLC>9||beforFJ>9) {
			System.out.println("房间号码错误");
		}else {
			String beforMess=hotel[beforLC][beforFJ];
			if(beforMess.contains("满")) {
				System.out.println("请问你想换的房间");
			int afterHN=scanner.nextInt();
			int afterLC=afterHN/100-1;
			int afterFJ=afterHN%100-1;
			if(afterHN<0||afterLC>9||afterFJ>9) {
				System.out.println("房间号码错误");
			}else {
				String afterMess=hotel[afterLC][afterFJ];
				if(afterMess.contains("空")) {
					hotel[beforLC][beforFJ]=hotel[beforLC][beforFJ].replaceAll("满", "空");
					hotel[afterLC][afterFJ]=hotel[afterLC][afterFJ].replaceAll("空", "满");
					System.out.println("换房成功");
				}else{
					System.out.println("该房间以有人");
				}
			}
			}else {
				System.out.println("该房间没有被入驻");
			}
		}
		
	}


	private static void out(String[][] hotel) {
		// TODO Auto-generated method stub
		System.out.println("请输入你想要退的房间号");
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		int LC=a/100-1;
		int FJ=a%100-1;
		if(a<0||LC>hotel.length-1||FJ>hotel[LC].length-1) {
			System.out.println("房间号错误!");
			
		}else {
			if(hotel[LC][FJ].contains("满")) {
				hotel[LC][FJ]=hotel[LC][FJ].replaceAll("满", "空");
				System.out.println("退房成功");
			}else {
				System.out.println("该房间没有被入驻");
			}
		}
	}


	private static void in(String[][] hotel) {
		// TODO Auto-generated method stub
		System.out.println("请输入你想入住的房间号");
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		int LC=a/100-1;
		int FJ=a%100-1;
		if(a<0||LC>hotel.length-1||FJ>hotel[LC].length-1) {
			System.out.println("无该房间");
			return;
		}else {
			if(hotel[LC][FJ].contains("空")) {
				//将字符串中指定内容替换成目标内容
				hotel[LC][FJ]=hotel[LC][FJ].replaceAll("空", "满");
				System.out.println("办理成功");
			}else{
				System.out.println("房间已满");
			}
		}
	}


	private static void select(String[][] hotel) {
		// TODO Auto-generated method stub
		for (int i = 0; i < hotel.length; i++) {
			System.out.println(Arrays.toString(hotel[i]));
		}
	}


	private static void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("***欢迎来到大酒店***");
		System.out.println("请输入对应的指令");
		System.out.println("select————————>查看所以房间信息");
		System.out.println("in———————————>办理入住");
		System.out.println("out——————————>办理退房");
		System.out.println("change———————>办理换房");
		System.out.println("exit—————————>退出系统");
	}


	private static String[][] createHotel() {
		// TODO Auto-generated method stub
		String arr[][]=new String[10][10];
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				arr[i][j]=(i+1)*100+(j+1)+"空	";
			}
		}
		return arr;
	}

}

 结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值