尤溪建设局网站,云南住房和建设厅网站,北京住房城乡建设厅网站,怎么样在百度搜到自己的网站13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时#xff0c;可以用abstract关键字来修饰该方法#xff0c;称为抽象方法#xff0c;用abstract来修饰该类#xff0c;称为抽象类。 13.1.2 抽象类-深入讨论 抽象类是java中一个比较重要的类#xff1a; 1、用abstract关键…13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时可以用abstract关键字来修饰该方法称为抽象方法用abstract来修饰该类称为抽象类。 13.1.2 抽象类-深入讨论 抽象类是java中一个比较重要的类 1、用abstract关键字来修饰一个类时这个类就叫抽象类 2、用abstract关键字来修饰一个方法时这个方法就叫抽象方法 3、抽象方法在编程中用的不是很多但是在公司笔试时考的较多。 13.1.3 抽象类-注意事项 1、抽象类不能实例化 2、抽象类不一定要包含abstract方法 3、一旦包含有abstract方法则这个类必须声明为abstract类 4、抽象方法不能有主体。例如 abstract void cry(); 不能加{} 13.2 接口 13.2.1 概念 接口就是给出一些没有内容的方法封装到一起到某个类要使用的时候再根据具体情况把这些方法写出来。语法 class 类名 implements 接口 { 方法; 变量; } 小结接口是更加抽象的抽象的类抽象类里的方法可以有方法体但接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低耦合的设计思想。 13.2.2 注意事项 1、接口不能被实例化 2、接口中所有的方法都不能有主体例如 void cry(); 后不能有{} 3、一个类可以实现多个接口 4、接口中可以有变量但是变量不能用private和protected修饰注意 a. 接口中的变量本质上都是static的而且是final不管你加不加static修饰 b. 在java开发中经常把常用的变量定义在接口中作为全局变量使用。 访问形式 接口名.变量名 5、一个接口不能继承其它的类但是可以继承别的接口。 13.3 实现接口 vs 继承类 1、Java的继承是单继承也就是一个类最多只能有一个父类这种单继承的机制可以保证类的纯洁性比c中的多继承机制简洁。但是不可否认对子类功能的扩展有一定影响。所以我们认为实现接口可以看作是对继承的一种补充。 2、还有一点继承是层级式的不太灵活。这种结构修改某个类就会打破这种继承的平衡而接口就没有这样的麻烦因为它只针对实现接口的类才起作用。所以实现接口可以在不打破集成关系的前提下对某个类功能进行扩展非常灵活。 13.4 绑定 将一个方法调用同这个方法所属的主体也就是对象或类关联起来叫做绑定分前期绑定和后期绑定两种。 1、前期绑定在程序运行之前进行绑定由编译器和连接程序实现又叫做静态绑定比如static方法和final方法注意这里也包括private方法因为它是隐式final的 2、后期绑定在运行时根据对象的类型进行绑定由方法调用机制实现因此又叫做动态绑定或者运行时绑定除了前期绑定外的所有方法都属于后期绑定。 多态就是在后期绑定这种机制上实现的。 13.5 接口多态优点 继承是多态得以实现的基础。 从字面上理解多态就是一种类型如 都是Car类型表现出多种形态宝马名字是BMW售价是300000奇瑞名字是CheryQQ售价是20000。 多态给我们带来的好处是消除了类的耦合关系使程序更容易扩展。 比如在汽车销售的例子中新增加一种类型汽车的销售只需要让新定义的类实现Car并实现它的所有方法而无需对原有代码做任何修改CarShop类的sellCar(Car car)方法就可以处理新的车型了。 抽象类的演示代码如下 1 /**日期2016-03-042 * 功能抽象类的演示3 */4 public class Practice4 5 {6 public static void main(String []args)7 {8 //Animal annew Animal(); //抽象类不能实例化9 Cat1 catnew Cat1();
10 cat.cry();
11 }
12 }
13
14 abstract class Animal1 //这就是一个抽象类
15 {
16 String name;
17 int age;
18 abstract public void cry();//抽象类中也可以没有抽象类这时cry就变成了Cat类自己的成员方法
19 public void eat() //抽象类中也可以有实现的类
20 {
21
22 }
23 }
24
25 class Cat1
26 {
27 //当一个类继承的父类是抽象类的话需要我们把父类中的抽象方法都实现
28
29 public void cry()
30 {
31 System.out.println(喵喵叫);
32 }
33 } 运行结果如下 1 喵喵叫 接口演示代码如下 1 /**日期2016-03-052 * 功能接口的演示3 */4 public class Practice15 {6 public static void main(String []args)7 {8 Computer computer1new Computer();9 computer1.useUsb(new Camera()); //体现了多态
10 computer1.useUsb(new Phone()); //体现了多态
11 computer1.insertEarPhone(new Phone()); //体现了多态
12 System.out.println(Usb.wrongMessage); //直接调用接口中声明的变量
13 }
14 }
15 class Computer
16 {
17 public void useUsb(Usb usb) //体现了多态
18 {
19 usb.start();
20 usb.stop();
21 }
22 public void insertEarPhone(Earphone earphone)
23 {
24 earphone.notice();
25 earphone.noticeSim();
26 }
27 }
28 interface Usb //定义接口
29 {
30 //接口中声明的变量为static的和final的即必须初始化可作为全局变量
31 String wrongMessage404 not found!;
32 public void start();
33 public void stop();
34 }
35
36 interface Simcard
37 {
38 public void noticeSim();
39 }
40
41 interface Earphone extends Simcard //一个接口不能继承其它的类但是可以继承别的接口
42 {
43 public void notice();
44 }
45
46 //编写相机类并实现Usb接口
47 //重要原则当一个类实现了一个接口就要求该类将这个接口的所有方法统统实现
48 class Camera implements Usb
49 {
50 public void start()
51 {
52 System.out.println(相机开始工作);
53 }
54 public void stop()
55 {
56 System.out.println(相机停止工作);
57 }
58 }
59
60 class Phone implements Usb,Earphone //一个类可以实现多个接口
61 {
62 public void start()
63 {
64 System.out.println(手机开始工作);
65 }
66 public void stop()
67 {
68 System.out.println(手机停止工作);
69 }
70 public void notice()
71 {
72 System.out.println(耳机插入了);
73 }
74 //Earphone继承了Simcard接口所以必须将Simcard接口里的所有方法也实现
75 public void noticeSim()
76 {
77 System.out.println(SIM卡插入了);
78 }
79 } 运行结果如下 1 相机开始工作
2 相机停止工作
3 手机开始工作
4 手机停止工作
5 耳机插入了
6 SIM卡插入了
7 404 not found! 接口扩展灵活性演示代码如下 1 /**日期2016-03-052 * 功能接口扩展灵活性的演示3 * 说明增加一种销售车辆时只需要增加下面演示的代码A和代码B就可以了无需修改其它代码很方便 4 */5 public class Practice6 {7 public static void main(String []args)8 {9 CarShop carshop1new CarShop();
10 carshop1.sellCar(new BMW());
11 carshop1.sellCar(new CheryQQ());
12 //carshop1.sellCar(new Audy()); //代码A增加销售车辆时增加该行代码
13 }
14 }
15 class CarShop
16 {
17 private int income0;
18 public void sellCar(Car car)
19 {
20 System.out.println(卖出了一辆car.getName());
21 incomecar.getPrice();
22 System.out.println(收入income);
23 }
24 }
25
26 interface Car
27 {
28 public String getName();
29 public int getPrice();
30 }
31
32 class BMW implements Car
33 {
34
35 Override
36 public String getName() {
37 // TODO Auto-generated method stub
38 return BMW;
39 }
40
41 Override
42 public int getPrice() {
43 // TODO Auto-generated method stub
44 return 300000;
45 }
46
47 }
48
49 class CheryQQ implements Car
50 {
51
52 Override
53 public String getName() {
54 // TODO Auto-generated method stub
55 return CheryQQ;
56 }
57
58 Override
59 public int getPrice() {
60 // TODO Auto-generated method stub
61 return 20000;
62 }
63
64 }
65
66 //代码B增加销售车辆时增加该段代码
67 /*class Audy implements Car
68 {
69
70 Override
71 public String getName() {
72 // TODO Auto-generated method stub
73 return Audy;
74 }
75
76 Override
77 public int getPrice() {
78 // TODO Auto-generated method stub
79 return 200000;
80 }
81
82 }*/ 运行结果如下 1 卖出了一辆BMW
2 收入300000
3 卖出了一辆CheryQQ
4 收入320000 转载于:https://www.cnblogs.com/PistonType/p/5245251.html