标签:26 07 继承 方法 接口 抽象 抽象类 姜珊 public
抽象接口
面向对象的特征:抽象
java中除了类还有抽象类和接口
abstract抽象-关键字
抽象没有方法体
Public abstract void eat()
抽象方法必须在一个抽象类
抽象方法存在意义:
1.根本意义:约定
约定大于配置,配置大于编码。
抽象方法约定了什么:
1.约定了返回值
2.访问权限
3.参数列表
需要重写时定义方法体
抽象方法必须在一个抽象类:
1.当我们定义一个抽象类,这个类中可以有哪些结构:
属性,成员方法,构造器,抽象方法,常量
2.抽象类中有没有抽象方法?
抽象类中可以没有抽象方法
3.抽象类不能被实例化,不能创建对象
4.抽象类构造器存在意义
为了约定子类构造器,必须和父类匹配
5一个类继承一个抽象类就必须重写这个抽象类所有抽象方法
abstract修饰什么?
类和方法
抽象方法能不能被private修饰?
不能
一般抽象基本上是public
抽象方法不能用Final修饰
抽象重点:
1,抽象方法必须是public或protect(private不被子类继承则无法实现该方法)默认情况下是可以的
2.抽象类不能被直接实例化,需要子类采用向上转型方式处理
3.抽象类必须有子类,使用extends继承。一个类只继承一个抽象类
4.子类(如果不是抽象类)必须重写抽象类中所有抽象方法(如果没有父类抽象方法,必须将子类也定为abstract)
接口:
比抽象类更高级的抽象
声明:使用interface关键字
public interface Ch02
Jdk7之前接口中只能定义抽象方法和静态常量,不能有属性有方法。
Jdk8及以后:接口中只能定义抽象方法(静态常量)不能有属性,可以有默认方法和静态方法。
只能在JDK8中用
public static final String NAME="名字"//静态常量
public abstract void breath();//抽象方法
public static void show()//静态方法
public default void info()//默认方法
JDK7—JDK8升级:默认方法。静态方法
接口中结构特点:
1.接口中方法默认public,推荐省略,abstract也默认也可省略
2.接口中的常量默认public static Final默认 也可省
3.接口中结构只能是public
4.接口可以被实现,实现。如果一个类实现了一个接口,需重写接口中所有方法
public class Cat extends Animal implements Biology
1.Cat类继承了Animal(同时实现)Biology接口
2.Cat可以叫做Animal子类也可以叫做Biology实现类
实现接口可以多实现,继承是单继承
开发中如果一件事可以通过继承和接口解决,优先使用接口
接口存在意义:约定
面向接口编程:主要写接口
面向切面编程
实现匿名类
Abstractr01=new Abstr01(){进行父类方法的重写}//new Abstr01成为无名子类
面对对象四大特征:(三大特征:没有抽象,可以归于多态)
封装 继承 多态 (抽象)
面试题:
继承类和实现接口的异同
相同点,继承和接口都需要重写父类方法
不同点:继承是单继承,接口是多实现
1、 继承抽象类,必须重写抽象类中所有抽象方法。
2、继承普通类,可以重写也可以不重写父类 的 方法。
3、 实现接口则必须 实现接口中的所有方法。 ( 接口中的方法均为抽象方法)。
抽象类和接口区别
一 接口和抽象类的相似性
1 接口和抽象类都不能被实例化,不能创建对象。
2 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
二 接口和抽象类的区别
1 接口里只能包含抽象方法,静态方法,抽象类则完全可以包含普通方法,接口中的普通方法默认为抽象方法。
2 .抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的,并且必须赋值,否则通不过编译。
3 接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
4 .接口里不能包含初始化块,但抽象类里完全可以包含初始化块。
5.一个类只能继承一个抽象类,而一个类却可以实现多个接口。
重点:
结合多态,传参,配合instance of 使用。在能使用多态 表示对象时,尽量使用多态。
心得:写代码时思路容易混乱,,接受比较慢,多态和接口融合不好
标签:26,07,继承,方法,接口,抽象,抽象类,姜珊,public 来源: https://www.cnblogs.com/jsdeboke/p/16522463.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。