java抽象(abstract)和接口(interface)

一: 抽象

(1)只是一个方法签名,没有方法体

         abstract void setPages(int page);

 (2)如果一个类有了一个抽象方法,这个类就必须声明为抽象类;如果父类是抽象类,子类必须覆盖所有在父类的抽象方法,否则子类也将成为一个抽象类

         比如下面的例子,父类的四个方法都必须在子类中实现

(3)可以调用父类的成员变量

          比如可以用this.pages=pages

package practice3;
abstract class Books{
	int pages;
	int prices;
	abstract void setPages(int page);
	abstract void setPrices(int price);
	abstract int getPages();
	abstract double getPrices();
}
class story extends Books{
	@Override
	void setPages(int page) {
		// TODO Auto-generated method stub
		this.pages=page;
	}
	@Override
	void setPrices(int price) {
		// TODO Auto-generated method stub
		this.prices=price;
	}
	@Override
	int getPages() {
		// TODO Auto-generated method stub
		return pages;
	}
	@Override
	double getPrices() {
		// TODO Auto-generated method stub
		return prices;
	}
}
class magzine extends Books{
	@Override
	void setPages(int page) {
		// TODO Auto-generated method stub
		this.pages=page;
	}
	@Override
	void setPrices(int price) {
		// TODO Auto-generated method stub
		this.prices=price;
	}
	@Override
	int getPages() {
		// TODO Auto-generated method stub
		return pages;
	}
	@Override
	double getPrices() {
		// TODO Auto-generated method stub
		return prices;
	}
}
public class test1 {
   public static void main(String[] args) {
	  story s=new story();
	  s.setPages(100);
	  s.setPrices(20);
	  System.out.println(s.getPages());
	  System.out.println(s.getPrices());
	  magzine m=new magzine();
	  m.setPages(102);
	  m.setPrices(203);
	  System.out.println(m.getPages());
	  System.out.println(m.getPrices());
}
}

 二:接口

(1)接口其实就是完全抽象的类

(2)接口所有的方法都没有方法体

        默认的:

        方法:public abstract 

        成员变量:public static final

(3)接口中的变量都必须初始化

(4)使用接口的类必须实现接口中的所有方法(类型:public)

package practice3;
interface Books{
	int pages=0;
	int prices=0;
	public void setPages(int page);
	public void setPrices(int price);
	public int getPages();
	public double getPrices();
}
class story implements Books{
	int pages,prices;
	public void setPages(int page) {
		// TODO Auto-generated method stub
		this.pages=page;
	}
	public void setPrices(int price) {
		// TODO Auto-generated method stub
		this.prices=price;
	}
	public int getPages() {
		// TODO Auto-generated method stub
		return pages;
	}
	public double getPrices() {
		// TODO Auto-generated method stub
		return prices;
	}
}
class magzine implements Books{
	int pages,prices;
	public void setPages(int page) {
		// TODO Auto-generated method stub
		this.pages=page;
	}
	@Override
	public void setPrices(int price) {
		// TODO Auto-generated method stub
		this.prices=price;
	}
	@Override
	public int getPages() {
		// TODO Auto-generated method stub
		return pages;
	}
	@Override
	public double getPrices() {
		// TODO Auto-generated method stub
		return prices;
	}
}
public class test1 {
   public static void main(String[] args) {
	  story s=new story();
	  s.setPages(100);
	  s.setPrices(20);
	  System.out.println(s.getPages());
	  System.out.println(s.getPrices());
	  magzine m=new magzine();
	  m.setPages(102);
	  m.setPrices(203);
	  System.out.println(m.getPages());
	  System.out.println(m.getPrices());
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼爱吃火锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值