day08_面向对象-继承-课后练习 - 参考答案

news/2024/7/5 8:21:42

文章目录

  • day08_课后练习
  • 代码阅读分析题
    • 第1题
    • 第2题
    • 第3题
    • 第4题
    • 第05题
  • 代码编程题
    • ## 第1题
    • 第2题
    • 第3题
    • 第4题

day08_课后练习

代码阅读分析题

第1题

考核知识点:权限修饰符

如下代码是否可以编译通过,如果能,结果是什么,如果不能,为什么?

public class Father{
	private String name = "atguigu";
	int age = 0;
}
public class Child extends Father{
	public String grade;
	
	public static void main(String[] args){
		Father f = new Child();
		System.out.println(f.name);
	}
}
package com.atguigu.test01;

public class Child extends Father{
	public String grade;
	
	public static void main(String[] args){
		Father f = new Child();
//		System.out.println(f.name);//编译错误,因为name私有化
	}
}

第2题

考核知识点:继承,super,static

如下代码是否可以编译通过,如果能,结果是什么,如果不能,为什么?

public class Person{
	public Person(){
		System.out.println("this is a Person.");
	}
}
public class Teacher extends Person{
	private String name = "tom";
	public Teacher(){
		System.out.println("this is a teacher.");
		super();
	}
	public static void main(String[] args){
		Teacher tea = new Teacher();
		System.out.println(this.name);
	}
}
package com.atguigu.test02;

public class Teacher extends Person{
	private String name = "tom";
	public Teacher(){
		System.out.println("this is a teacher.");
//		super();//错误,super()必须在构造器首行
	}
	public static void main(String[] args){
		Teacher tea = new Teacher();
//		System.out.println(this.name);//错误,static方法中不能使用this
	}
}

第3题

考核知识点:继承、this

package com.atguigu.test03;

public class Test03 {
	public static void main(String[] args) {
		Father f = new Father();
		Son s = new Son();
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.setInfo("尚硅谷");
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
	}
}
class Father{
	private String info = "atguigu";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
}
class Son extends Father{
	
}
/*
1、私有的属性是否可以被继承到子类中?
(1)如果从可以访问性的角度来说:不能,因为在子类中不能直接访问父类的私有的属性,但是可以通过get/set操作
(2)如果从类的概念来说,
类是一类具有相同特性(属性、方法等)的事物的抽象描述,
那么子类是从父类派生出来的,那么子类是有父类的这个特征的,即有这个属性的

2、每一个对象的非静态属性是独立的,其中一个对象修改和另一个对象是无关的
 */
public class Test03 {
	public static void main(String[] args) {
		Father f = new Father();
		Son s = new Son();
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.setInfo("尚硅谷");
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
	}
}
class Father{
	private String info = "atguigu";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
}
class Son extends Father{
	
}

在这里插入图片描述

第4题

考核知识点:继承、this、super

package com.atguigu.test04;

public class Test04 {
	public static void main(String[] args) {
		Father f = new Father();
		Son s = new Son();
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
		System.out.println("-----------------");
		s.setInfo("大硅谷");
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
	}
}
class Father{
	private String info = "atguigu";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
}
class Son extends Father{
	private String info = "尚硅谷";
	public void test(){
		System.out.println(this.getInfo());
		System.out.println(super.getInfo());
	}
}
/*
1、私有的属性是否可以被继承到子类中?
(1)如果从可以访问性的角度来说:不能,因为在子类中不能直接访问父类的私有的属性,但是可以通过get/set操作
(2)如果从类的概念来说,
类是一类具有相同特性(属性、方法等)的事物的抽象描述,
那么子类是从父类派生出来的,那么子类是有父类的这个特征的,即有这个属性的

2、每一个对象的非静态属性是独立的,其中一个对象修改和另一个对象是无关的

3、当子类有与父类的属性同名时,那么通过子类对象调用get/set方法操作的是父类继承还是子类自己的属性呢?
要看子类是否重写:
如果没有重写,操作的都是父类的,不管是直接getInfo()还是this.getInfo(),还是super.getInfo()
如果重写了,如果通过子类对象调用,操作的是子类的,例如:getInfo()还是this.getInfo(),
		如果通过super.调用的,操作的是父类的。
 */
public class Test04 {
	public static void main(String[] args) {
		Father f = new Father();
		Son s = new Son();
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
		System.out.println("-----------------");
		s.setInfo("大硅谷");
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
	}
}
class Father{
	private String info = "atguigu";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
}
class Son extends Father{
	private String info = "尚硅谷";
	public void test(){
		System.out.println(this.getInfo());
		System.out.println(super.getInfo());
	}
}

在这里插入图片描述

第05题

考核知识点:继承、this、super、重写

package com.atguigu.test05;

public class Test05 {
	public static void main(String[] args) {
		Father f = new Father();
		Son s = new Son();
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
		System.out.println("-----------------");
		s.setInfo("大硅谷");
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
	}
}
class Father{
	private String info = "atguigu";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
}
class Son extends Father{
	private String info = "尚硅谷";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
	public void test(){
		System.out.println(this.getInfo());
		System.out.println(super.getInfo());
	}
}
/*
1、私有的属性是否可以被继承到子类中?
(1)如果从可以访问性的角度来说:不能,因为在子类中不能直接访问父类的私有的属性,但是可以通过get/set操作
(2)如果从类的概念来说,
类是一类具有相同特性(属性、方法等)的事物的抽象描述,
那么子类是从父类派生出来的,那么子类是有父类的这个特征的,即有这个属性的

2、每一个对象的非静态属性是独立的,其中一个对象修改和另一个对象是无关的

3、当子类有与父类的属性同名时,那么通过子类对象调用get/set方法操作的是父类继承还是子类自己的属性呢?
要看子类是否重写:
如果没有重写,操作的都是父类的,不管是直接getInfo()还是this.getInfo(),还是super.getInfo()
如果重写了,如果通过子类对象调用,操作的是子类的,例如:getInfo()还是this.getInfo(),
		如果通过super.调用的,操作的是父类的。
 */
public class Test08 {
	public static void main(String[] args) {
		Father f = new Father();
		Son s = new Son();
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
		System.out.println("-----------------");
		s.setInfo("大硅谷");
		System.out.println(f.getInfo());
		System.out.println(s.getInfo());
		s.test();
	}
}
class Father{
	private String info = "atguigu";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
}
class Son extends Father{
	private String info = "尚硅谷";
	public void setInfo(String info){
		this.info = info;
	}
	public String getInfo(){
		return info;
	}
	public void test(){
		System.out.println(this.getInfo());
		System.out.println(super.getInfo());
	}
}

在这里插入图片描述

代码编程题

## 第1题

知识点:Object类的方法

案例:

​ 1、声明三角形类,包含a,b,c三边

​ (1)属性私有化,提供无参,有参构造,提供get/set

​ (2)重写:toString()

​ (3)重写:hashCode和equals方法

​ (4)编写 public double getArea():求面积方法

​ (5)编写 public double getPiremeter():求周长方法

​ 2、声明测试类Test06,在测试类中创建两个三角形对象,调用以上方法进行测试

package com.atguigu.test06;

public class Test06 {
	public static void main(String[] args) {
		Triangle t1 = new Triangle(3,4,5);
		Triangle t2 = new Triangle(3,3,3);
		
		System.out.println(t1);
		System.out.println(t2);
		
		System.out.println("t1的面积:" + t1.getArea());
		System.out.println("t1的周长:" + t1.getPiremeter());
		System.out.println("t2的面积:" + t2.getArea());
		System.out.println("t2的面积:" + t2.getPiremeter());
		
		System.out.println("t1和t2是否相同:" + t1.equals(t2));
	}
}
class Triangle{
	private double a;
	private double b;
	private double c;
	public Triangle(double a, double b, double c) {
		super();
		this.a = a;
		this.b = b;
		this.c = c;
	}
	public Triangle() {
		super();
	}
	public double getA() {
		return a;
	}
	public void setA(double a) {
		this.a = a;
	}
	public double getB() {
		return b;
	}
	public void setB(double b) {
		this.b = b;
	}
	public double getC() {
		return c;
	}
	public void setC(double c) {
		this.c = c;
	}
	@Override
	public String toString() {
		return "三角形的三条边:a=" + a + ", b=" + b + ", c=" + c;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		long temp;
		temp = Double.doubleToLongBits(a);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(b);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(c);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Triangle other = (Triangle) obj;
		if (Double.doubleToLongBits(a) != Double.doubleToLongBits(other.a))
			return false;
		if (Double.doubleToLongBits(b) != Double.doubleToLongBits(other.b))
			return false;
		if (Double.doubleToLongBits(c) != Double.doubleToLongBits(other.c))
			return false;
		return true;
	}
	public double getArea(){
		double p = (a + b + c)/2;
		return Math.sqrt(p * (p-a) * (p-b) * (p-c));
	}
	public double getPiremeter(){
		return a + b + c;
	}
}

第2题

案例:

​ 1、在com.atguigu.test07包中声明员工类、程序员类、设计师类、架构师类,

在这里插入图片描述

  • 员工类属性:编号、姓名、年龄、薪资

  • 程序员类属性:编程语言,默认都是"java"

  • 设计师类属性:奖金

  • 架构师类属性:持有股票数量

    要求:属性私有化,无参有参构造,get/set,getInfo方法(考虑重写)

    2、在com.atguigu.test07包中声明Test07测试类

    (1)在main中有一些常量和一个二维数组

    final int EMPLOYEE = 10;//表示普通员工
    final int PROGRAMMER = 11;//表示程序员
    final int DESIGNER = 12;//表示设计师
    final int ARCHITECT = 13;//表示架构师
        
    String[][] EMPLOYEES = {
            {"10", "1", "段誉", "22", "3000"},
            {"13", "2", "令狐冲", "32", "18000", "15000", "2000"},
            {"11", "3", "任我行", "23", "7000"},
            {"11", "4", "张三丰", "24", "7300"},
            {"12", "5", "周芷若", "28", "10000", "5000"},
            {"11", "6", "赵敏", "22", "6800"},
            {"12", "7", "张无忌", "29", "10800","5200"},
            {"13", "8", "韦小宝", "30", "19800", "15000", "2500"},
            {"12", "9", "杨过", "26", "9800", "5500"},
            {"11", "10", "小龙女", "21", "6600"},
            {"11", "11", "郭靖", "25", "7100"},
            {"12", "12", "黄蓉", "27", "9600", "4800"}
        };
    

    (2)创建一个员工数组

    (3)根据以上数据,初始化员工数组

    提示:把字符串转为int和double类型的值,可以使用如下方式:

    String idStr = "1";
    int id = Integer.parseInt(idStr);
    
    String salaryStr = "7300";
    double salary = Double.parseDouble(salaryStr);
    

    (4)遍历数组,使用如下格式

    编号	姓名	年龄	薪资	语言	奖金	股票
    .....
    
    package com.atguigu.test07;
    
    public class Employee {
    	private int id;
    	private String name;
    	private int age;
    	private double salary;
    	
    	public Employee() {
    		super();
    	}
    
    	public Employee(int id, String name, int age, double salary) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.age = age;
    		this.salary = salary;
    	}
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public double getSalary() {
    		return salary;
    	}
    
    	public void setSalary(double salary) {
    		this.salary = salary;
    	}
    	
    	public String getInfo(){
    		return id + "\t" + name + "\t" + age + "\t" + salary;
    	}
    }
    
    package com.atguigu.test07;
    
    public class Programmer extends Employee{
    	private String language = "java";
    
    	public Programmer() {
    		super();
    	}
    
    	public Programmer(int id, String name, int age, double salary) {
    		super(id, name, age, salary);
    	}
    
    	public Programmer(int id, String name, int age, double salary, String language) {
    		super(id, name, age, salary);
    		this.language = language;
    	}
    
    	public String getLanguage() {
    		return language;
    	}
    
    	public void setLanguage(String language) {
    		this.language = language;
    	}
    
    	@Override
    	public String getInfo() {
    		return super.getInfo() + "\t" + language;
    	}
    	
    }
    
    
    package com.atguigu.test07;
    
    public class Designer extends Programmer {
    	private double bonus;
    
    	public Designer() {
    		super();
    	}
    
    	public Designer(int id, String name, int age, double salary, double bonus) {
    		super(id, name, age, salary);
    		this.bonus = bonus;
    	}
    
    	public Designer(int id, String name, int age, double salary, String language, double bonus) {
    		super(id, name, age, salary, language);
    		this.bonus = bonus;
    	}
    
    	public double getBonus() {
    		return bonus;
    	}
    
    	public void setBonus(double bonus) {
    		this.bonus = bonus;
    	}
    
    	@Override
    	public String getInfo() {
    		return super.getInfo()+ "\t" + bonus;
    	}
    	
    }
    
    
    package com.atguigu.test07;
    
    public class Architect extends Designer {
    	private int stock;
    
    	public Architect() {
    		super();
    	}
    
    	public Architect(int id, String name, int age, double salary, double bonus, int stock) {
    		super(id, name, age, salary, bonus);
    		this.stock = stock;
    	}
    
    	public Architect(int id, String name, int age, double salary, String language, double bonus, int stock) {
    		super(id, name, age, salary, language, bonus);
    		this.stock = stock;
    	}
    
    	public int getStock() {
    		return stock;
    	}
    
    	public void setStock(int stock) {
    		this.stock = stock;
    	}
    
    	@Override
    	public String getInfo() {
    		return super.getInfo() + "\t" + stock;
    	}
    	
    }
    
    
    package com.atguigu.test07;
    
    public class Test07 {
    
    	public static void main(String[] args) {
    		final int EMPLOYEE = 10;//表示普通员工
    		final int PROGRAMMER = 11;//表示程序员
    		final int DESIGNER = 12;//表示设计师
    		final int ARCHITECT = 13;//表示架构师
    		    
    		String[][] EMPLOYEES = {
    		        {"10", "1", "段誉", "22", "3000"},
    		        {"13", "2", "令狐冲", "32", "18000", "15000", "2000"},
    		        {"11", "3", "任我行", "23", "7000"},
    		        {"11", "4", "张三丰", "24", "7300"},
    		        {"12", "5", "周芷若", "28", "10000", "5000"},
    		        {"11", "6", "赵敏", "22", "6800"},
    		        {"12", "7", "张无忌", "29", "10800","5200"},
    		        {"13", "8", "韦小宝", "30", "19800", "15000", "2500"},
    		        {"12", "9", "杨过", "26", "9800", "5500"},
    		        {"11", "10", "小龙女", "21", "6600"},
    		        {"11", "11", "郭靖", "25", "7100"},
    		        {"12", "12", "黄蓉", "27", "9600", "4800"}
    		    };
    		
    		Employee[] all = new Employee[EMPLOYEES.length];
    		for (int i = 0; i < all.length; i++) {
    			int type = Integer.parseInt(EMPLOYEES[i][0]);
    			int id = Integer.parseInt(EMPLOYEES[i][1]);
    			String name = EMPLOYEES[i][2];
    			int age = Integer.parseInt(EMPLOYEES[i][3]);
    			double salary = Double.parseDouble(EMPLOYEES[i][4]);
    			
    			if(type == EMPLOYEE){
    				all[i] = new Employee(id, name, age, salary);
    			}else if(type == PROGRAMMER){
    				all[i] = new Programmer(id, name, age, salary);
    			}else if(type == DESIGNER){
    				double bonus = Integer.parseInt(EMPLOYEES[i][5]);
    				all[i] = new Designer(id, name, age, salary, bonus);
    			}else if(type == ARCHITECT){
    				double bonus = Double.parseDouble(EMPLOYEES[i][5]);
    				int stock = Integer.parseInt(EMPLOYEES[i][6]);
    				all[i] = new Architect(id, name, age, salary, bonus, stock);
    			}
    		}
    		
    		System.out.println("编号\t姓名\t年龄\t薪资\t语言\t奖金\t股票");
    		for (int i = 0; i < all.length; i++) {
    			System.out.println(all[i].getInfo());
    		}
    	}
    
    }
    
    

第3题

案例:

​ 1、在com.atguigu.test08包中声明图形Graphic、圆Circle、矩形Rectangle类、三角形Triangle类

​ 2、图形Graphic类中有:

​ ①public double getArea()方法:返回面积

​ ②public double getPerimeter()方法:返回周长

​ ③public String getInfo()方法:返回图形信息

​ 3、圆类和矩形类重写这两个方法

​ 4、在com.atguigu.test08包中声明测试类Test08_1

​ (1)请设计一个方法,可以用于比较两个图形的面积是否相等

​ (2)请设计一个方法,可以用于找出两个图形中面积大的那个

​ (3)public static void main(String[] args){}

​ 在主方法中,创建1个圆、1个矩形、1个三角形对象,并分别调用(1)、(2)方法进行测试。

​ 5、在com.atguigu.test08包中测试类Test08_2

​ (1)请设计一个方法,可以用于遍历一个图形数组

​ (2)请设计一个方法,可以用于给一个图形数组进行按照面积从小到大排序

​ (3)public static void main(String[] args){}

​ 在主方法中,创建1个圆、1个矩形、1个三角形对象,放到数组中,遍历显示,然后排序后再遍历显示。

package com.atguigu.test08;

public class Graphic {
	public double getArea(){
		return 0.0;
	}
	public double getPerimeter(){
		return 0.0;
	}
	public String getInfo(){
		return "面积:" + getArea() + ",周长:" + getPerimeter();
	}
}

package com.atguigu.test08;

public class Circle extends Graphic{
	private double radius;

	public Circle() {
		super();
	}

	public Circle(double radius) {
		super();
		this.radius = radius;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}

	@Override
	public double getArea() {
		return 3.14 * radius * radius;
	}

	@Override
	public double getPerimeter() {
		return 2 * 3.14 * radius;
	}

	@Override
	public String getInfo() {
		return "半径:" + radius + "," + super.getInfo();
	}
	
}

package com.atguigu.test08;

public class Rectangle extends Graphic{
	private double length;
	private double width;
	public Rectangle(double length, double width) {
		super();
		this.length = length;
		this.width = width;
	}
	public Rectangle() {
		super();
	}
	public double getLength() {
		return length;
	}
	public void setLength(double length) {
		this.length = length;
	}
	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	@Override
	public double getArea() {
		return length * width;
	}
	@Override
	public double getPerimeter() {
		return 2 * (length + width);
	}
	@Override
	public String getInfo() {
		return "长:" + length + ",宽:" + width + "," + super.getInfo();
	}
	
}

package com.atguigu.test08;

public class Triangle extends Graphic{
	private double a;
	private double b;
	private double c;
	public Triangle() {
		super();
	}
	public Triangle(double a, double b, double c) {
		super();
		this.a = a;
		this.b = b;
		this.c = c;
	}
	public double getA() {
		return a;
	}
	public void setA(double a) {
		this.a = a;
	}
	public double getB() {
		return b;
	}
	public void setB(double b) {
		this.b = b;
	}
	public double getC() {
		return c;
	}
	public void setC(double c) {
		this.c = c;
	}
	@Override
	public double getArea() {
		double p = (a + b + c)/2;
		return Math.sqrt(p * (p-a) * (p-b) * (p-c));
	}
	@Override
	public double getPerimeter() {
		return a+b+c;
	}
	@Override
	public String getInfo() {
		return "边长为:" + a + "," + b +"," + c+"," + super.getInfo();
	}
	
}

package com.atguigu.test08;

public class Test08_01 {
	public static void main(String[] args) {
		Circle c1 = new Circle(2);
		Rectangle r1 = new Rectangle(2, 3);
		Triangle t1 = new Triangle(3, 4, 5);
		System.out.println("c1的面积:" + c1.getArea());
		System.out.println("r1的面积:" + r1.getArea());
		System.out.println("t1的面积:" + t1.getArea());
		
		System.out.println("c1和r1的面积是否相等:" + equal(c1, r1));
		System.out.println("c1和t1的面积是否相等:" + equal(c1, t1));
		System.out.println("r1和t1的面积是否相等:" + equal(r1, t1));
		
		Graphic max1 = getMax(c1, r1);
		System.out.println("c1和r1中面积大的是:" + max1.getArea());
		Graphic max2 = getMax(c1, t1);
		System.out.println("c1和t1中面积大的是:" + max2.getArea());
		Graphic max3 = getMax(r1, t1);
		System.out.println("r1和t1中面积大的是:" + max3.getArea());
	}
	
	public static boolean equal(Graphic g1, Graphic g2){
		return g1.getArea() == g2.getArea();
	}
	
	public static Graphic getMax(Graphic g1, Graphic g2){
		return g1.getArea() > g2.getArea() ? g1 : g2;
	}
}

package com.atguigu.test08;

public class Test08_02 {
	public static void main(String[] args) {
		Graphic[] all = new Graphic[3];
		all[0] = new Circle(2);
		all[1] = new Rectangle(2, 3);
		all[2] = new Triangle(3, 4, 5);
		
		System.out.println("排序前:");
		print(all);
		
		sort(all);
		
		System.out.println("排序后:");
		print(all);
		
	}
	public static void print(Graphic[] all){
		for (int i = 0; i < all.length; i++) {
			System.out.println(all[i].getInfo());
		}
	}
	
	public static void sort(Graphic[] all){
		for (int i = 1; i < all.length; i++) {
			for (int j = 0; j < all.length-i; j++) {
				if(all[j].getArea() > all[j+1].getArea()){
					Graphic temp = all[j];
					all[j] = all[j+1];
					all[j+1] = temp;
				}
			}
		}
	}
}

第4题

案例:

​ 1、在com.atguigu.test09包中声明人Person、男人Man、女人Woman类

​ (1)在Person类中,包含

​ ①public void eat():打印吃饭

​ ②public void toilet():打印上洗手间

​ (2)在Man类中,包含

​ ①重写上面的方法

​ ②增加 public void smoke():打印抽烟

​ (3)在Woman类中,包含

​ ①重写上面的方法

​ ②增加 public void makeup():打印化妆

​ 2、在com.atguigu.test09包中声明测试类Test09

​ (1)public static void meeting(Person… ps)

​ 在该方法中,每一个人先吃饭,然后上洗手间,然后如果是男人,随后抽根烟,如果是女人,随后化个妆

​ (2)public static void main(String[] args)

​ 在主方法中,创建多个男人和女人对象,并调用meeting()方法进行测试

package com.atguigu.test09;

public class Person {
	public void eat(){
		System.out.println("吃饭");
	}
	public void toilet(){
		System.out.println("上洗手间");
	}
}

package com.atguigu.test09;

public class Man extends Person{

	@Override
	public void eat() {
		System.out.println("细嚼慢咽吃饭");
	}

	@Override
	public void toilet() {
		System.out.println("男生上洗手间");
	}
	public void smoke(){
		System.out.println("抽烟爽爽");
	}
}

package com.atguigu.test09;

public class Woman extends Person{

	@Override
	public void eat() {
		System.out.println("狼吞虎咽吃饭");
	}

	@Override
	public void toilet() {
		System.out.println("女生上洗手间");
	}
	
	public void makeup(){
		System.out.println("化妆美美");
	}

}

package com.atguigu.test09;

public class Test09 {
	public static void main(String[] args) {
		meeting(new Woman(),new Man(), new Woman(), new Man());
	}
	
	public static void meeting(Person... ps){
		for (int i = 0; i < ps.length; i++) {
			ps[i].eat();
			ps[i].toilet();
			if(ps[i] instanceof Woman){
				((Woman)ps[i]).makeup();
			}else if(ps[i] instanceof Man){
				((Man)ps[i]).smoke();
			}
		}
	}
}

http://lihuaxi.xjx100.cn/news/2046362.html

相关文章

R语言入门笔记2.5

数据预处理 R语言处理的数据多以数据框的形式出现。 预备操作 数据查看 > dim(x) [1] 16 3 #数据框有16行3列 > names(x) #查看数据框的变量名 [1] "X" "Z" "Y" > head(x,3) #查看前3行&#xff0c;若为-3则是查看后三行之…

刘雯井柏然植物园漫步,情侣裙超养眼,甜蜜穿搭亮了。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 刘雯井柏然漫步永州植物园&#xff0c;情侣裙惊艳亮相&#x…

微服务-微服务Spring Security6实战

1. Spring Security介绍 1.1 Spring Security定义 Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框 架。 Spring Security 主要实现了 Authentication &#xff08;认证&#xff0c;解决 who are you? &#xff09; 和…

js语言身份证实名认证接口代码调用-实名认证接口

身份证实名认证接口的实时性、准确性、安全性、成本效益、合规性及易用性等均可保障&#xff0c;现已服务于金融、电信、游戏、保险、物流等多行业&#xff0c;是广大用户的优质选择。翔云API提供售前、对接测试、售后支持等服务&#xff0c;欢迎大家与我们进行深度交流。 以下…

Java学习26--枚举类

enum枚举 Java 枚举是一个特殊的类&#xff0c;一般表示一组常量&#xff0c;比如一年的 4 个季节&#xff0c;一年的 12 个月份&#xff0c;一个星期的 7 天&#xff0c;方向有东南西北等。 Java 枚举类使用 enum 关键字来定义&#xff0c;各个常量使用逗号 , 来分割。 enu…

报错:org.springframework.jdbc.BadSqlGrammarException:

//报错 2024-02-24 19:44:10.814 ERROR 6184 --- [nio-9090-exec-5] c.e.exception.GlobalExceptionHandler : 异常信息&#xff1a; org.springframework.jdbc.BadSqlGrammarException: GPT&#xff1a; 根据异常信息&#xff0c;这是一个Spring框架抛出的BadSqlGrammar…

OpenFeign整合Sentinel

OpenFeign 整合 Sentinel 实现服务降级 引入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos服务发现 --><depen…

277.【华为OD机试真题】图像物体的边界(深度优先搜索 (DFS)—JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…