抽象类
在面向对象中,所有的对象可以通过类来创建。反过来说,并不是所有的类都可以创建对象的。如果一个类中没有足够完整的信息来描述具体的对象的话,那么这个类叫抽象类。在Java中使用关键字abstract修饰类,这个类叫抽象类。
abstract关键字
abstract修饰的类叫抽象类
abstract修饰的方法叫抽象方法
总结:abstract 只能修饰类和方法
语法格式:
abstarct class 类名{ 普通的方法; public void eat () { } 抽象方法; public abstarct void sleep (); }
注意事项:
1.如果一个类中用abstract修饰的话,那么这个类叫抽象类
2.抽象类中可以有普通成员方法和抽象方法
3.抽象方法没有方法体,是不完整的方法
4.抽象类不能被实例化
5.写一个普通的类去继承抽象类
6.在子类中一定去实现(重写)抽象类中所有的抽象方法
7.非抽象方法可以重写也可以不重写
8.一个抽象类能不能去继承另外一个抽象类? 可以的!!!
9.抽象类可以继承非抽象类
案例
class Cell { public void add () { System.out.println("分裂"); } } abstract class Animal extends Cell{ public abstract void run(); } abstract class Monkey extends Animal{//抽象类 public void call () {//普通的成员方法 System.out.println("咿咿呀呀......."); } public abstract void eat(); public abstract void sleep(); } class People extends Monkey { @Override public void eat() { // TODO Auto-generated method stub System.out.println("吃肉!!!"); } @Override public void sleep() { // TODO Auto-generated method stub System.out.println("躺着睡。。。"); } @Override public void call() { System.out.println("嘻嘻哈哈说话"); } @Override public void run() { // TODO Auto-generated method stub System.out.println("人站立奔跑。。。"); } } public class Demo1 { public static void main(String[] args) { People people = new People(); people.add(); } }
接口
语法格式
interface 接口名字 { 成员变量 成员方法 }
实现接口使用关键字implements
接口的注意事项:
1.使用关键字 interface 声明出来一个接口
2.接口面可以有属性,但是是static 和final修饰的属性。被称为常量。几乎不用
3.接口下面全部抽象的方法,不带方法体的
4.jdk1.8以后是可以有默认(default)的方法的,这个默认方法带有方法体【重点!!!】
5.接口下面没有构造方法,不能被实例化
6.去使用一个普通的类去实现这个接口,使用关键字implements
7.一定要在实现类中去实现所有的抽象方法
8.一个普通的类可以实现多个接口,弥补了单继承的局限性
9.一个接口可以去继承另外一个接口
案例
电脑类去实现以下的三个接口。
电源接口
鼠标接口
网络接口
比如上面有三个接口,电脑是一个类,让电脑本身不具备插电源 连网线连鼠标的
只有在电脑类基础之上 去实现三个接口之后,那么电脑就会拥有充电 联网连鼠标这些功能的
//电源接口 interface Adapter { public void input();//充电 } //USB 接口 连接鼠标 interface USB { public void mouse(); } //网络接口 可以联网 interface Net { public void internet(); } class Computer implements Adapter, USB, Net{ @Override public void internet() { // TODO Auto-generated method stub System.out.println("联网"); } @Override public void mouse() { // TODO Auto-generated method stub System.out.println("连接鼠标"); } @Override public void input() { // TODO Auto-generated method stub System.out.println("充电!!!"); } } public class Demo3 { public static void main(String[] args) { Computer computer = new Computer(); computer.mouse(); computer.input(); computer.internet(); } }
5652

被折叠的 条评论
为什么被折叠?



