标签:不用 col ace abs put 而且 java学习日记 继承 public
因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的
1 public class test1 2 { 3 public static void main(String[] args) { 4 } 5 } 6 7 class Animal 8 { 9 String name; 10 int age; 11 12 //动物会叫 13 public void cry() 14 { 15 System.out.println("不知道怎么叫"); 16 //问题是这个方法永远都不会用到 17 } 18 }
当父类的一些方法不能确定时,可以用 abstract 关键字来修饰该方法或类,称为抽象方法和抽象类。
1 //抽象类 2 abstract class Animal 3 { 4 String name; 5 int age; 6 //动物会叫 7 abstract public void cry(); 8 } 9 10 //抽象类仍然可以被继承
1 public class test1 2 { 3 public static void main(String[] args) { 4 } 5 } 6 //抽象类 7 abstract class Animal 8 { 9 String name; 10 int age; 11 abstract public void cry(); 12 } 13 //当一个类继承的父类是抽象类的话 14 //需要我们把抽象类中的所有的抽象方法全部实现 15 class Cat extends Animal 16 { 17 //实现父类的cry抽象方法 18 public void cry() 19 { 20 } 21 }
usb插槽就是现实中的接口—— 我们可以把手机,U盘都插到插槽上而不用担心出问题,因为usb插槽的厂家和做设备的厂家都遵守了统一的规定和尺寸,排线等等,但是给设备的内部结构显然是不相同的
硬件上的设计在软件中也是大量存在的
package test; /* * 作者:woliaoa * 功能:接口的实现 * 时间:18.9.16 */ public class test2 { public static void main(String[] args) { Computer computer = new Computer(); //创建 Camera camera1 = new Camera(); //创建Camera Phone phone1 = new Phone(); //创建Phone computer.useUsb(camera1); //使用computer中的定义的useUsb方法,并把对象camera1传递给形参 computer.useUsb(phone1);//使用computer中的定义的useUsb方法,并把对象phone1传递给形参 } } //定义一个接口 interface Usb { //在接口中声明了两个方法 public void start(); public void stop(); } //编写照相机类,并实现Usb接口 —— implements是实现的意思 //一个重要的原则,当一个类实现了一个接口,就要求该类把这个接口的所有方法统统实现 class Camera implements Usb { public void start() { System.out.println("我是相机,我开始工作了"); } public void stop() { System.out.println("我是相机,我停止工作了"); } } class Phone implements Usb { //实现接口中的所有方法 public void start() { System.out.println("我是手机,我开始工作了"); } public void stop() { System.out.println("我是手机,我停止工作了"); } } //计算机类, class Computer { //开始使用Usb接口 public void useUsb(Usb usb)//前面的是Usb接口 后面的是局部变量usb { usb.start(); //让形参usb,调用Usb接口中的start方法 usb.stop(); //让形参usb,调用Usb接口中的stiop方法 } } 运行结果: 我是相机,我开始工作了 我是相机,我停止工作了 我是手机,我开始工作了 我是手机,我停止工作了
接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。语法:
//定义一个接口 interface 接口名 { 被初始化的变量; 方法; } //使用一个接口 class 类名 implement 接口 { 变量; 方法; }
public class test2 { public static void main(String[] args) { System.out.println(Usb.a); //调用Usb接口中的a变量 } } //定义一个接口 interface Usb { int a=1; //在接口中声明了两个方法 public void start(); public void stop(); }
小结:接口是更加抽象的抽象类,抽象类里有些方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚和低耦合的设计思想。
或
标签:不用 col ace abs put 而且 java学习日记 继承 public
原文地址:https://www.cnblogs.com/houzhaohui/p/9655726.html