Java抽象类和接口

Java·抽象类和接口

1.抽象类

(1)用absorb修饰的类称为抽象类
(2)抽象类中的抽象方法只许声明不许实现,没有方法体
(3)抽象类可以包含所有的普通类的任何东西
(4)抽象类不能new一个对象,必须用一个子类继承抽象父类
(5)子类必须覆盖重写抽象父类当中所有的抽象方法,除非子类也是抽象类
(6)不能使用final修饰

//抽象类继承的例子
public abstract class AbstractSinger {
	protected String name;
	protected String style;
	protected String representative;
	public void introduce() {
		System.out.println("Hello , 我是歌手");
	}
	abstract void sing();
	abstract void speak();
}
class PopSinger extends AbstractSinger {

	public PopSinger() {
		super();
		// TODO Auto-generated constructor stub
	}
	public PopSinger(String name,String style,String representative) {
		this.name = name;
		this.style = style; 
		this.representative = representative;
	}
	void speak() {
		System.out.println("我叫 "+name+",我的演唱风格为"+style+",我的代表作品有"+representative);
	}
	void sing() {
		// TODO Auto-generated method stub
		System.out.println("我是唱流行乐的");
	}

}
//把歌手的图片在窗口画出要在与src同级的Folder中加入歌手的图片
import java.awt.*;
import javax.swing.*;

public class picture extends JFrame{
	Image dzq=Toolkit.getDefaultToolkit().getImage("images/dzq.jpg");
	//画窗口的方法
	public void paint(Graphics g) {
		g.drawImage(dzq, 0 ,0 , null);
		Color c=g.getColor();
		Font f=new Font("宋体",Font.BOLD,20);
		g.setFont(f);
		g.setColor(Color.cyan);
		g.drawString("我叫 邓紫棋,我的演唱风格为流行风格,",50, 80);	
		g.drawString("我的代表作品有《画(Live Piano Session Ⅱ)》",50, 117);
	}
	//窗口加载
	void launchFrame(){
		setSize(800,526);//宽高300
		setLocation(370,90);//屏幕位置
		setVisible(true);	
	//重画窗口
	while(true) {
		repaint();
		try {
			Thread.sleep(4);//40毫秒每秒25次
		}catch(Exception e){
			e.printStackTrace();
			}
		}
	}
}
public class MainClass {
	public static void main(String[] args) {
		AbstractSinger singer = new PopSinger("邓紫棋","流行风格","《画(Live Piano Session Ⅱ)》");
		singer.introduce();
		singer.speak();
		singer.sing();
		picture p=new picture();
		p.launchFrame();
	}
}

2.接口

(1)是一种引用类型,是方法的集合,接口只有方法的特征没有方法的实现
(2)不能对接口直接进行对象实例化操作
(3)接口中只有全局变量,没有成员变量
(4)必须有子类,子类由implements实现接口
(5)接口的实现类必须重写接口中的所有抽象方法
(6)一个接口或类都可继承或实现多个接口

在这里插入图片描述

public interface Advertisement {
	public void showAdvertisement();
	public String getCorpName();
}
public class AdvertisementBoard {
	public void show(Advertisement adver) {
		System.out.println(adver.getCorpName()+"公司广告词");
		adver.showAdvertisement();
	}
}
public class HuaweiCorp implements Advertisement {

	@Override
	public void showAdvertisement() {
		// TODO Auto-generated method stub
		System.out.println("丰富人们的沟通与生活");
	}

	@Override
	public String getCorpName() {
		// TODO Auto-generated method stub
		return "华为";
	}

}
public class TestInterface {
	public static void main(String[] args) {
		AdvertisementBoard board = new AdvertisementBoard();
		board.show(new HuaweiCorp());
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值