标签:26 abstract 接口 抽象 2022.07 抽象类 方法 public 王茜
抽象
面向对象的特征:抽象
abstract 抽象
抽象方法:
public abstract void eat();
抽象方法必须在一个抽象类里
1、当定义一个抽象类时,具有以下结构:
属性,成员方法,构造器,抽象方法,常量
2、抽象类可以没有抽象方法
3、抽象类是不能被直接实例化的,需要依靠子类采用向上转型的方式处理
抽象类不能创建对象
4、抽象类的构造器存在的意义:
为了约定子类的构造器和必须和父类的匹配
5、一个类如果继承了一个抽象类,就必须重写这个抽象类的所有的抽象方法
子类如果不是抽象类,则必须重写抽象类中的所有抽象方法
abstract能修饰什么?
类、方法
抽象方法不能用private修饰,开发中基本上用public
抽象方法不能用final修饰
抽象类不能用final修饰,因为用final修饰的类是不能被继承的
接口
接口:比抽象类更高级的抽象
声明:interface关键字,public interface Ch02
JDK1.7之前:接口中只能定义抽象方法,不能有属性,不能有方法
(静态的常量)
JDK8及以后:接口中只能定义抽象类方法,不能有属性,可以有默认的方法和静态的常量
JDK7------JDK8:默认方法,静态方法
接口中结构的特点:
接口中的抽象方法默认是public abstract 推荐省略
接口中的常量默认是public static final 推荐省略
接口中的结构必须是public
接口可以被实现
如果一个类实现了一个接口,他就需要重写接口中的所有的抽象方法
实现接口是可以多实现的,继承只能单继承
面试题:
1、继承抽象类和实现接口的异同
2、抽象类和接口的区别
3、Java中只有单继承?NO
在Java中是存在多继承的,发生在接口之间
接口存在的意义:
约定。
总结
1、抽象abstract关键字
抽象类的特点
abstract能修饰哪些结构
抽象方法的特点
2、接口。JDK7-JDK8的有什么改变
3、面试题:继承类和实现接口的异同?抽象类和接口的区别
4、多态的补充说明。
5、匿名实现类
重点:结合多态,参数的传递,配合instanceof使用
在能够使用多态表示对象的时候,尽量使用多态。
栈和队列
建立在两个最基础的数据结构的基础上构建的两个受限制的线性表
面向对象四大特征:
封装,继承,多态,(抽象)
类型题:(银行取票机)
import java.util.Scanner;
/**
* 银行取票机
*/
public class BankTicketMachine {
// 需要一个队列结构
private Queue queue = new Queue();
// 银行的小票起始号
private int startNumber = 100;
private Scanner scanner = new Scanner(System.in);
// 取票
public Integer getTicket(){
if(queue.empty()){
System.out.println("号码已经全部领取,需要继续释放号码!");
System.out.println("请输入释放号码的个数:");
Integer number = scanner.nextInt();
pushTicket(number);
}
return queue.poll();
}
// 排队
public void pushTicket(int ticketNumber){
for (int i = 0;i < ticketNumber;i++){
startNumber += 1;
queue.add(startNumber);
}
}
public void run() {
while(true) {
System.out.println("请输入您的名字:");
String name = scanner.next();
Integer ticket = getTicket();
System.out.println("尊敬的【"+ name+ "】,您的号码是:" + ticket + "。");
}
}
public static void main(String[] args) {
// BankTicketMachine bankTicketMachine = new BankTicketMachine();
new BankTicketMachine().run();
}
}
标签:26,abstract,接口,抽象,2022.07,抽象类,方法,public,王茜 来源: https://www.cnblogs.com/wx1019/p/16522158.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。