Java的抽象类与接口
public class JumppingDemo {
public static void main(String[] args) {
//错误示范
Jumpping j = new Jumpping();//抽象不能实例化
Jumpping j = new Cat();//使用实现类对象来实现
j.jump();//该语句编译看j的左边(Jumpping),执行j的看右边(Cat)
//意思是j能不能调用jump方法,看Jumpping类里面是否有junp方法,Cat里是否重写了jump方法,都满足才成功
}
}
//接口的特点
/*
使用关键字interface修饰
public interface 接口名 {}
类实现接口用**implements**表示
**public class 类名 implements 接口名{}**
Cat实现Jumpping接口
** public class Cat implements Jumpping{**
*/
//实现类必须重写接口的方法
@Override
public void jump() {
System.out.println("猫跳了跳");
}
}
/*
接口不能实例化
通过**实现类对象实例化,这叫接口多态**
多态的前提
有继承或实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象
*/
/*
接口成员的特点
**接口里的成员变量默认被final修饰,不可更改,也默认被static修饰,可以通过"接口名.成员名"的方式调用**
public static final int num = 3;
int num = 3;//二者无异
接口是没有构造方法的
接口成员方法默认是抽象方法 public abstract ...
*/
public interface Jumpping {
**public abstract** void jump();
}
/*
抽象类与接口
**抽象类是对事物的抽象,接口是对行为的抽象**
*/
Jumpping j = new Dog();
j.jump();
//接口多态只能调用接口里有的方法
//Jumpping接口里有jump抽象方法,Dog类implements Jumpping接口且重写了jump方法
System.out.println("---");
Animal a = new Dog();
//Animal类里有eat方法,Dog继承(extends)了Animal,即父类引用指向子类
a.setAge(5);
a.setName("来福");//常规构造方法,IDEA里的快捷键为alt+insert(如果insert与F12在一起,快捷键加上Fn)
System.out.println(a.getName()+","+a.getAge());
a.eat();
System.out.println("---");//抽象类多态同样只能调用(父类)Animal里有的方法
//Dog extends Animal implement Jumpping,同时拥有该类和接口里的方法
//注意:Dog类里必须重写了Animal和Jumpping的方法
Dog c = new Dog();
c.setName("来福");
c.setAge(6);
System.out.println(a.getName()+","+a.getAge());
c.eat();//来自Animal类
c.jump();//来自Jumpping接口
//以上实例化的对象调用方法都是有限的,只有Dog类里能调用的方法最多,遂采用以上方式
个人学习记录,不一定完全没错误。如果发现有需要改正的地方,欢迎指正噢。

浙公网安备 33010602011771号