Java 抽象类和接口&内部类及综合

11.抽象类和接口

1.在JDK1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些? [多选题]全选
您的回答:
A、抽象类中可以有普通成员变量,接口中没有普通成员变量。
B、抽象类和接口中都可以包含静态成员常量。
C、一个类可以实现多个接口,但只能继承一个抽象类
D、抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。
2.抽象类与接口的区别是什么?

抽象类中可以有一个或多个抽象方法,而接口中的方法必须都是抽象方法
接口所属性只能是publist static final修饰的,而抽象类中的属性则可以是任何类型的属性;
抽象类只能单继承,接口之间可以是多继承,一个类可以实现多个接口
通常来说,抽象类可以表示同一类事物,而接口可以表示一种能力

3.类和类之间的关系有哪几种?分别是什么?每种关系在代码中是如何体现的?
共5种
继承
关联
聚合
组合
依赖
继承:is
判断:is
代码:extends
依赖:偶然发生的联系,
​ 判断:use​ 代码:方法中的参数,或方法中的局部变量;
关联:是一种强依赖;
判断:has 代码:作为属性来存在; 聚合:关联的一种特殊形式,代码相同;都是属性;主要强调的是整体和局部 组合:关联的一种特殊形式,代码相同,都是属性;整体和局部有相同的生命周期;
4.【编程题】类之间的关系 要求:先说明由几个类;然后确定类和类(接口)的关系,画出类图;再编程来实现
1.模拟司机(Driver)可以开汽车(Car);而汽车不属于司机;
2.武将,可以使用各种武器(刀,弓,矛)进行攻击,武将最多只能有一把武器,可以对敌军的人物造成伤害;
3.电脑可以从U盘,数据相机,mp3等电子设备中下载数据;
4.班级由多个学生和只有一个教师组成;
更改老师,添加,删除学生;
5.模拟天天酷跑中的主人公,主角(Actor)可以有一个宠物,宠物可以有猫,狗,免,主角在跑的时侯,他的宠物可以跟着一起跑;
6.模拟一下开心牧场;农场中有农户,各种动物(牛,马,羊,鸡等),农户可以喂养动物;
略(翻笔记)类图!!!

笔记
抽象类(abstract)
抽象方法,没有方法的实现体。如果一个类中含有抽象方法,这个类一定是抽象类。抽象类中也可以包含非抽象方

抽象类不能实例化,可以定义一个类继承抽象类 ,重写所有的抽象方法,创建这个子类的对象
代码

public abstract class Test {
    
//属性 
	private String name; 
	//常量属性 
	public static final String IP = "192.168.1.11"; 
	//构造器 
	public Test(){
   
	 }
	 //定义非抽象方法 
	public void method2(){
   
	 }
	 //定义了一个抽象方法 
	public abstract void method(); 
	}
	public class TestSub extends Test {
    
	@Override 
	public void method() {
    
		System.out.println("TestSub method"); 
		}
		public static void main(String[] args) 
		{
    
		TestSub ts = new TestSub(); 
		ts.method(); } }

模板设计模式
定义一个抽象类,在抽象类中的非抽象方法中 写好一个算法过程,在这个方法中调用抽象类中的抽象方法,就相
当于定义了一个模板类。要使用这个模板类,必须要定义一个子类继承模板类,重写抽象方法,就可以调用子类继
承的非抽象方法了。

public abstract class Bank {
    
	public abstract double getBenjin(); 
	public abstract double getLv(); 
	/**
	* 本金 * 利率 * 
	@return 
	*/ 
	public double lixi(){
    
		return getBenjin()*getLv(); 
		} 
		}
public class BankSub extends Bank {
    
	@Override 
	public double getBenjin() {
    
		return 10000; }
	@Override 
	public double getLv() {
    
		return 0.03; }
	public static void main(String[] args) {
    
		BankSub b = new BankSub();
		System.out.println(b.lixi()); 
		} }

接口(interface)
定义接口
语法:
[<修饰访问符>] interface 接口名{
[常量]
[抽象方法]
}
接口一定是public的
接口的属性,默认是有public static final修饰,因为接口中只能定义常量
接口中的方法,默认是有abstract修饰,因为接口中的方法都是抽象方法

public interface ITest {
    
//public static final String name = "test"; 
String name = "test"; 
public void method(); }

实现接口
定义一个类实现接口(implements),重写接口中所有的方法

public class TestImpl implements ITest{
    
	@Override 	
	public void method() {
    
		System.out.println("TestImpl method方法"); 
		}
	public static void main(String[] args) {
    
		TestImpl t = new TestImpl(); 
		t.method(); 
		} }

一个类可以实现多个接口

public class TestImpl implements ITest,IUSB{
    
	@Override 
	public void method() {
    
		System.out.println("TestImpl method方法"); 	
			}
	@Override 
	public void tran() {
    
		System.out.println("USB 传输数据"); 
		}
	public static void main(String[] args) {
   
		TestImpl t = new TestImpl(); 
		t.method(); 
		} }

一个类可以继承一个类并实现多个接口,把extends写在implements的前面

public class TestImpl extends Computer implements ITest,IUSB{
    
	@Override 
	public void method() {
    
		System.out.println("TestImpl method方法"); 
		}
		@Override 
		public void tran() {
   
			System.out.println("USB 传输数据")
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值