abstract class A{ abstract void test(); }
abstract void test();
只能说明有这个功能却不能具体的知道是要实现什么,所以不进行具体的实现。class A extends B{}
package com.bixiangdong.oop; //抽象 abstract class Person{ String name; int id; double money; Person(String name,int id,double money){ this.name=name; this.id=id; this.money=money; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } abstract void work(); } //employee class Employee extends Person{ Employee(String name,int id,double money){ super(name,id,money); //继承的方式 子类构造函数 的第一行默认调用父类的构造函数, // 如果没有无参构造那么就要显示的定义有参构造 } @Override void work() { System.out.println(name+" "+id+" "+money+"我是员工,我工作"); } } class Manager extends Person{ double bous; Manager(String name,int id,double money,double bous){ super(name,id,money); this.bous=bous; } @Override void work() { System.out.println(name+" "+id+" "+money+" "+bous+"我是经理,我工作"); } } public class Demo03 { public static void main(String[] args) { new Employee("高鹏",1,10.00).work(); new Manager("经理",10,10.0,1000.0).work(); } }
package com.bixiangdong.oop; interface Demo04 { public static final int A = 0; public abstract void c(); } interface DemoA{ public abstract void d(); public abstract void c(); } class DemoImpl implements Demo04,DemoA{ @Override public void c() { } @Override public void d() { } }
重点:因为多继承调用方法时会出现调用不确定的情况(如果继承的两个类里面有同一个方法),所以Java使用多实现的机制进行另类的多继承(这是基于接口的特性来进行的,因为接口中的方法都是抽象方法,所以方法是没有具体的实现的,需要实现类来重写接口中的方法,此时就算多实现时有两个接口具有同样的抽象方法,也是在实现类中进行一次重写,如此实现类实例化之后调用的方法也是实现类中的方法不存在调用不确定的情况)
疑问:接口中的抽象方法是没有具体实现的,实现类进行实现,那么多实现的意义在哪?
interface Demo04 { public static final int A = 0; public abstract void c(); } interface DemoB{ } interface DemoA{ public abstract void d(); public abstract void c(); } interface Test extends DemoA,DemoB{ }