阶段性复习与练习

多日一考:

1.abstract能修饰哪些结构?修饰后,有什么特点?

类、方法

类不能实例化,提供子类

抽象方法,只定义了一种功能的标准。具体的执行,需要子类去实现。

2.接口是否能继承接口?抽象类是否能实现(implements)接口?抽象类是否能继承非抽象类的类?

能,能,能

3.声明抽象类,并包含抽象方法。测试类中创建一个继承抽象类的匿名子类的对象

abstract AA{

public abstract void m();

}

main(){

        AA a = new AA(){

                public void m(){

                

                }

}

        a.m();

}

4.抽象类和接口有哪些共同点和区别?

相同点:不能实例化,都可以被继承

不同点:抽象类:有构造器。接口:不能声明构造器

多继承 VS 单继承

5.如何创建静态成员内部类和非静态成员内部类的对象?

Person.Dog dog = new Person.Dog();

Person p = new Person();

Person.Bird bird = p.new Bird();

 复习:

关键字:abstract

abstract:抽象的

1.可以用来修饰:类、方法

2.具体的:

abstract修饰类:抽象类

        > 此类不能实例化

        > 抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)

        > 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 - - - > 抽象的使用前提:继承性

abstract修饰方法:抽象方法

        > 抽象方法只有方法的声明,没有方法体

        > 包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。

        > 若子类重写了父类中的所有的抽象方法后,此子类方可实例化

        > 若子类没有重写父类中的所有的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰

3.注意点:

        3.1.abstract不能用来修饰:属性、构造器等结构

        3.2.abstract不能用来修饰私有方法、静态方法、final的方法、final的类

4.abstract的应用举例:

模板方法的设计模式

1.解决的问题

        在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽象出来,供不同子类实现。这就时一种模板模式

2.举例

3.应用场景

关键字:interface

interface:接口

1.使用说明:

        1.1.接口使用interface来定义

       1. 2.Java中,接口和类是并列的两个结构

       1. 3.如何定义接口:定义接口中的成员

                1.3.1JDK7及以前:只能定义全局常量和抽象方法

                        > 全局常量:public static final的,但是书写时,可以省略不写

                        > 抽象方法:public abstract的

                1.3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法

       1. 4.接口中不可以定义构造器的!意味接口不可以实例化

        1.5.Java开发中,接口通过让类去实现(implements)的方式来使用

                如果实现类覆盖了接口中的所有抽象方法,则实现类就可以实例化

                如果实现类没有覆盖接口中所有的抽象方法,则此实现仍为一个抽象类

       1.6.Java类可以实现多个接口 - - - > 弥补了Java单继承性的局限性

        格式:class AA extends BB implements CC,DD,EE

        1.7.接口与接口之间可以继承,而且可以多继承

        1.8.接口的具体使用,体现多态性

        1.9.接口,实际上可以看做是一种规范

2.举例:

体会:

        1.接口使用上也满足多态性

        2.接口,实际上就是定义了一种规范

        3.开发中,体会面向接口编程

3.体会面向接口编程的思想

 面向接口编程:我们在应用程序中,调用的结构都是JDBC中定义的接口,不会出现具体某一个数据库厂商的API。

4.Java8中关于接口的新规范

知识点1:接口中定义的静态方法。只能通过接口来调用。

知识点2:通过实现类的对象,可以调用接口中的默认方法

如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法

知识点3:如果子类(或实现类)继承的父类和实现的接口中声明了同名参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法。- - > 类优先原则

知识点4:如果实现类实现了多个接口,而这多个接口中定义了同名同参的默认方法,那么在实现类没有重写此方法的情况下,报错。- - - > 接口冲突

这就需要我们必须在实现类中重写此方法

知识点5:如何在子类(或实现)的方法中调用父类、接口中被重写的方法

public void myMethod() {
		method3();
		super.method3();
		
		CompareA.super.method3();
		CompareB.super.method3();
	}
}

5.面试题:

抽象类和接口的异同?

相同点:不能实例化;都可以包含抽象方法的

不同点:

1)把抽象类和接口(Java7,Java8,Java9)的定义、内部结构解释说明

2)类:单继承性        接口:多继承

        类与接口:多实现

代理模式:

1.解决的问题

代理模式是Java开发中使用较多的一种设计模式、代理设计就是为其他对象提供一种代理控制对这个对象的访问。

2.举例

3.应用场景

 工厂设计模式

1.解决的问题

        实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

2.具体模式

简单工厂模式、工厂方法模式、抽象工厂模式。

类的结构:内部类

内部类:类的第五个成员

1.定义:Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类

2.内部类的分类:

        成员内部类(静态、非静态) VS 局部内部类(方法内、代码内、构造器内)

3.成员内部类的理解:

  一方面,作为外部类的成员:

                > 调用外部类的结构

                > 可以被static修饰

                > 可以被4种不同的权限修饰

        另一方面,作为一个类:

                > 类内可以定义属性、方法、构造器等

                > 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承

                > 可以被abstract修饰

4.成员内部类:

        4.1如何创建成员内部类的对象?(静态的,非静态的)

        Person.Dog dog = new Person.Dog();
		dog.show();
		
		Person p = new Person();
		Person.Bird bird = p.new Bird();

        4.2如何在成员内部类中调用外部类的结构?

class Bird{
		String name = "杜鹃";
		public Bird() {
			
		}
		public void sing() {
			System.out.println("我是一只小小鸟");
			Person.this.eat();
			System.out.println(age);
		}
		public void display(String name) {
			System.out.println(name);
			System.out.println(this.name);
			System.out.println(Person.this.name);
		}
	}

5.局部内部类的使用:

public Comparable getComparable() {
		class MyComparable implements Comparable{
 
			@Override
			public int compareTo(Object o) {
				return 0;
			}
		}
		return new MyComparable();
	}

注意点:

成员内部类和局部内部类,在编译以后,都会生成字节码文件。

格式:成员内部类:外部类$内部类名.class

        局部内部类:外部类$数字 内部类名.class

总结:今天复习了抽象类、接口、内部类。

明日计划:学习异常处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值