2021-06-17

Java面向对象第四章

一.抽象类和抽象方法:

1.抽象类是专门设计用来让子类继承,抽象方法必须被子类重写。

2.在Java语言中,使用abstract关键字修饰一个类时,该类就是抽象类,使用abstract关键字修饰一个方法时该方法即为抽象方法。

3.抽象类和抽象方法的规则:
(1)一个抽象类中可以不定义抽象方法,但是只要类中有一个抽象方法,则该类一定是抽象类。
(2)抽象类不能被实列化,即不能被new创建一个实列对象。
(3)如果一个子类继承一个抽象类,则子类需要通过覆盖的方式来重写该抽象类中的所有抽象方法。如果子类没有完全重写抽象父类中所有的抽象方法,则子类仍是抽象的。
(4)抽象方法可以与public、protected复合使用,但不能与final、private和static复合使用。

4.抽象类的作用:
抽象类不能被实列化,只能作为父类被继承。

二.作业
1.创建三个动物类,分别是老虎类、猴子类和狼类,定义动物抽象父类,在该类中定义捕食抽象方法和非抽象方法进食,在该方法中调用捕食方法。

package com.chapter5;
public abstract class Animal {
	public abstract void predation();
	public void eat() {
		System.out.println("嚼碎食物,将食物咽进肚子理...");
	}
}
package com.chapter5;

public class Monkey extends Animal {

	public void predation() {
		System.out.println("猴子悠哉悠哉的爬到树上摘香蕉");
	}
	public void e() {
		this.eat();
	}
	
}
package com.chapter5;

public class Tiger extends Animal {
	public void predation() {
		System.out.println("老虎抓住了一头猎物");
	}
	public void a() {
		this.eat();
	}
}
package com.chapter5;

public class Wolf extends Animal {
	public void predation() {
		System.out.println("狼王组织狼群进攻抓住了猎物");
	}	
	public void t() {
		this.eat();
	}
}
package com.chapter5;

public class Test {
	public static void main(String[] args) {
		Wolf w= new Wolf();
		w.predation();
		w.t();
		Tiger t = new Tiger();
		t.predation();
		t.a();
		Monkey m= new Monkey();
		m.predation();
		m.e();
		
	}
}

2.雇员示例:

需求:公司中程序员有姓名,工号,薪水,工作内容
项目经理除了有姓名,工号,薪水还有奖金,工作内容
对给出需求进行数据建模

package com.chapter6;

public abstract class Company {
	String name;
	String id;
	double salay;
	public Company(String name,String id,double salay){
		this.name = name;
		this.id = id;
		this.salay = salay;
	}
	public abstract void Work();
}
package com.chapter6;

public class PM extends Company {
	
	double pmsalay;
	
	public PM(String name, String id, double salay,double pmsalay) {
		super(name, id, salay);
		this.pmsalay = pmsalay;
	}

	public void Work() {
		System.out.println("有事秘书干");
	}
	
}
package com.chapter6;
public class Programmer extends Company {

	public Programmer(String name, String id, double salay) {
		super(name, id, salay);
	}

	public void Work() {
		System.out.println("程序员");
	}
	
}
package com.chapter6;

public class Test {
	public static void main(String[] args) {
		Company pm = new PM("小明", "13216464X", 1000000, 100000000);
		Company pr = new Programmer("小红", "6546416541ez", 500);
		pm.Work();
		pr.Work();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值