JAVA入门到精通-第13讲-抽象类-接口
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145654751-1441174071.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145655181-2138776620.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145656696-503235482.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145657088-1486843903.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145657445-767355146.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145657709-1440666687.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145658070-1739394884.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145658612-167293739.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145659670-1218124228.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145700162-1564917775.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145701711-1231337097.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145702212-332073723.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145703466-246822449.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145704008-966549489.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145704375-681851319.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145705275-910084101.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145706046-62402231.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145706491-1482686362.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145706737-172640059.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145707107-612663227.png)
java面向对象编程(3)--抽象类
抽象类--解决之道
当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。
//抽象类的必要性[Demo124.java]
public class Demo124 {
public
static void main(String[] args) {
//Animal an=new Animal();抽象类不允许实例化
Animal
an=new Cat();
an.cry();
an=new
Dog();
an.cry();
}
}
//抽象类abstract关键词
abstract class Animal{
String
name;
int
age;
//动物会叫,使用了abstract抽象方法
abstract
public void cry();//抽象类中可以没有abstract抽象方法
//抽象类内可以有实现方法
public
void sx(){
System.out.println("实现方法");
}
}
//当一个子类继承的父类是abstract抽象类的话,需要程序员把抽象类的抽象方法全部实现。
class Cat extends Animal{
//实现父类的cry,其实类似上节学习中的子类覆盖父类
public
void cry(){
System.out.println("猫猫叫");
}
}
class Dog extends Animal{
//实现父类的cry,其实类似上节学习中的子类覆盖父类
public
void cry(){
System.out.println("汪汪叫");
}
}
抽象类--深入讨论
抽象类是java中一个比较重要的类。
1、用abstract关键字来修饰一个类时,这个类就是抽象类。
2、用abstract关键字来修饰一个方法时,这个方法就是抽象方法。
3、abstract抽象类中的abstract抽象方法是不允许在抽象类中实现的,一旦实现就不是抽象方法和抽象类了。abstract抽象方法只能在子类中实现。
4、抽象类中可以拥有实现方法。
5、抽象方法在编程中用的不是很多,但是在公司笔试时,却是考官比较爱问的知识点。
抽象类--注意事项
1、抽象类不能被实例化
2、抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract抽象方法。
3、一旦类包含了abstract抽象方法,则这个类必须声明为abstract抽象类。
4、抽象方法不能有主体。
正确的抽象方法例:abstract void abc();
错语的抽象方法例:abstract void abc(){}
java面向对象编程(3)--接口
接口--为什么有?
USB插槽就是现实中的接口。
什么是接口?
接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。
接口的建立语法:interface 接口名{方法;}
语法:class 类名
implements 接口{
方法;
变量;
}
小结:接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低偶合的设计思想。
接口--注意事项
1、接口不能被实例化
2、接口中所有的方法都不能有主体。错误语法例:void aaa(){}←(注意不能有花括号)
接口可以看作更加抽象的抽象类。
3、一个类可以实现多个接口
4、接口中可以有变量[但变量不能用private和protected修饰]
a、接口中的变量,本质上都是static的而且是final类型的,不管你加不加static修饰
b、在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用
访问形式:接口名.变量名
5、一个接口不能继承其它的类,但是可以继承别的接口
//接口的实现[Demo125.java]
//电脑,相机,u盘,手机
//usb接口
interface Usb{
int
a=1;//加不加static都是静态的,不能用private和protected修饰
//声明了两个方法
public
void start();//接口开始工作
public
void stop();//接口停止工作
}
//编写了一个相机类,并实现了usb接口
//一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现
class Camera implements Usb{
public
void start(){
System.out.println("我是相机,开始工作了..");
}
public
void stop(){
System.out.println("我是相机,停止工作了..");
}
}
//接口继承别的接口
class Base{
}
interface Tt{
}
interface Son extends Tt{
}
//编写了一个手机,并实现了usb接口
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.start();
usb.stop();
}
}
public class Demo125 {
public
static void main(String[] args) {
System.out.println(Usb.a);
//创建 Computer
Computer
computer=new Computer();
//创建Camera
Camera
camera1=new Camera();
//创建Phone
Phone
phone1=new Phone();
computer.useUsb(camera1);
computer.useUsb(phone1);
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145708052-1180297961.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145708226-985803583.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130145708422-712435909.png)