JAVA基础:abstract class \ interface

来源:互联网 发布:linux schedule 编辑:程序博客网 时间:2024/06/05 02:52

abstract class
抽象类:
如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。
比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如狗、猫来对它进行特定的描述,我们才知道它长成啥样。

抽象使用的关键词:abstract
1、abstract 修饰类 抽象类
2、abstract 修饰方法 抽象方法
3、抽象方法没有实现部分
注意:抽象类中的抽象方法 强制子类去重写抽象方法
注意:抽象类不能创建对象(不能实例化对象)
创建对象的方式:比照多态来创建

抽象类注意
1、成员变量:可以有变量 也可以由常量
2、成员方法:可以有抽象方法 也可以有成员方法
3、构造方法:有
注意:抽象类中不一定有抽象方法 但是抽象方法 一定存在抽象类中
注意:抽象类的子类 必须重写抽象父类的所有抽象方法

public class Demo01 {

public static void main(String[] args) {    Animal animal = new Cat();    animal.eat();    animal.fun();}

}

abstract class Animal{

final int num = 10;public abstract void eat(); public Animal() {    System.out.println("我是父类的抽象方法");}public void fun() {    System.out.println("我是成员方法");}

}

class Cat extends Animal{

public Cat() {    super();}@Overridepublic void eat() {    System.out.println(num);    System.out.println("猫吃鱼");      }

}

abstract 与那些关键字不能共存
abstrcat 和 static
static修饰方法用类名去调用,abstract修饰抽象方法没有方法的实现
没有实现部分的方法 只能是方法的声明 不能直接调用 所以不能共存

abstrcat 和 final
final修饰方法不能被重写 abstrcat修饰方法就是为了子类重写方法所以不能共存

abstrcat 和 peivate
private修饰方法只能本类访问 子类访问不到 谈不上重写的方法了 所以不能共存

package com.lanou3g;

接口:
1、狭义的接口 interface关键词修饰的 叫做接口
2、广义的接口: 规则

定义接口:
interface 接口名{}

接口特点
1、接口中只能声明抽象方法
2、如果你不写public abstract关键词修饰 接口中声明方法
那么系统会帮你 默认添加上
书写建议:最好写上默认的修饰词
3、接口也不能实例化对象 (谁要用接口 谁就去实现接口中的方法)
(接口相当于干爹 继承 相当于 亲爹)
可以使用多态的方式创建实现类的对象
4、接口的实现 使用implement(实现) 关键字

接口注意:
1、成员变量:只能有常量(static public final 常量名 = 初值)
当你在接口中声明变量时系统默认 会是 public static final修饰
书写建议:最好写熟了再说
2、成员方法:只有抽象方法 没有成员方法
3、构造方法:没有构造方法

public class Demo03 {

public static void main(String[] args) {    InterA a = new Person();    a.print();    System.out.println(InterA.num);}

}

interface InterA{
public static final int num = 10;
public abstract void print() ;

}

class Person implements InterA{
@Override
public void print() {

    System.out.println(num);    System.out.println("打印");}   

}

interface InterX{
public abstract void fun();
}
interface InterY{
public abstract void fun();
}

interface InterZ extends InterX,InterY{

}

原创粉丝点击