第一组 孙乃宇 7.26 抽象类和接口
作者:互联网
抽象类和接口
抽象
抽象类的基本概念
普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。
抽象方法,没有方法体。
抽象方法,存在的意义是什么?
根本意义,约定。自定义的规则 约定大于配置,配置大于编码
抽象方法到底约定了什么,定了哪些规则。
约定了返回值,约定了访问权限,参数列表,需要在重写的时候定义方法体
面向对象特征:抽象
抽象方法必须在一个抽象类中,加一个abstract
public abstract class Animal {}
-
当我们定义了一个抽象类,这个抽象类中可以有那些结构
属性 成员方法 构造器 抽象方法 常量
-
抽象类中能不能没有抽象方法?
抽象类可以没有抽象方法
-
抽象类是不能被实例化
抽象类不能创建对象
-
抽象类的构造器存在的意义
为了约定子类的构造器必须和父类匹配
-
一个类如果继承了一个抽象类,就必须重写抽象类的所有的抽象方法
//定义一个抽象类
public abstract class Animal{
public abstract void eat();//定义一个抽象方法
}
//定义一个类来继承抽象方法
public class Cat extends Abstr01{
@Override
public void show() {
system.out.println("猫吃鱼");
}
}
//继承抽象类要重写抽象类中所有的方法,不然这个类也要声明为抽象类。abstract能够修饰什么?
类,方法。
抽象方法能不能用private修饰?不能,开发中抽象方法基本上都是public
抽象方法能不能用final修饰?不能,用final修饰的方法是不允许重写的
抽象类能不能用final修饰?不能,用final修饰的类是不允许被继承的。
总结:
-
抽象方法必须是public或者是protected因为如果是private,不饿能被子类继承
子类便无法实现方法,默认情况下是可以的。默认情况是public
-
抽象类是不能被直接实例化,需要靠子类采用向上转型的方法处理。
-
抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类
-
子类(如果不是抽象类)则必须重写抽象类中的所有方法
(如果子类没有实现父类的抽象方法)必须将子类也定义为abstract类
接口
java中,除了类,还有抽象类和接口
比抽象类更高级的抽象
抽象类也是比类更高级的抽象
接口的声明:使用interface关键字,public interface ch02
接口中只能定义抽象方法,不能有属性,不能有方法,
可以放静态常量,静态方法
JDK8及以后,接口中也是只能定义抽象方法,不能有属性,可以有默认的方法和静态方法
接口中结构的特点
接口中的方法默认为public abstract 我们推荐就省略了,
接口中的常量默认是 public static final ,我们推荐就省略了
说一句话,接口中的结构必须是public
接口可以被实现,实现类
比如说A类 implements 接口,那么我们就说A是这个接口的实现类
如果一个类实现了一个接口,他就需要重写接口中的所用方法。
实现接口时可以多实现的,继承只能是单继承的
开发中,如果一件事情可以通过继承和实现接口来解决,优先使用接口解决。
案例
//定义了一个接口
public interface Inter01 {
void eat();//定义了一个方法
}
//定义一个类来实现接口,使用implements关键字
public class Inter01Impl implements Inter01 {
@Override
public void eat() {//实现类中重写接口中定义的方法
}
}
//创建测试类
public class Demo{
public static void main(String [] args){
Inter01 inter01=new Inter01Impl();//创建对象
inter01.eat();//调用对象
}
}
面试题:
1.继承抽象类和实现接口的异同。
2.抽象类和接口的区别。
接口存在的意义?
约定:
多态的前提:
1.继承
2.重写方法
3.父类-->子类,接口-->实现类
面试题:
在java中只有单继承?不对 *接口之间是多继承的
java类与类之间只有单继承
public interface A extends B,C,D{}
总结
-
抽象abstract关键字
-
-
抽象类的特点
-
abstract能修饰那些结构
-
抽象方法的特点
-
接口:JDK7-->JDK8有什么改变
-
-
面试题:继承类和实现接口的异同?抽象类和接口的区别
-
-
多态的补充说明:
-
-
匿名实现类
-
-
重点:结合多态,主要是传参,配合instanceof使用
-
在能够使用多态表示对象的时候,尽量使用多态。
-
栈和队列
-
建立在两个最基础的数据结构的基础上构建的两个受限制的线性表。
-
面向对象四大特征:
-
封装,继承,多态,(抽象)
###
标签:继承,方法,7.26,接口,抽象,抽象类,孙乃宇,public 来源: https://www.cnblogs.com/sunnaiyu/p/16522454.html