public abstract class Animal { public int age; public String name; public abstract void eat(); public Animal(int age, String name) { this.age = age; this.name = name; }}
public abstract class Dog extends Animal{//将Dog类也进行抽象化 public Dog(int age, String name) { super(age, name); }/* @Override public void eat() { System.out.println(this.name+"吃狗粮"); }*/不用再重写Animal类里的方法了 public abstract void bark();}class Labrador extends Dog{//再用一个普通类继承Dog类 public Labrador(int age, String name) { super(age, name); } @Override public void eat() { } @Override public void bark() { }}
@Overridepublic int compareTo(Student o) { return 0;}
如果我们想进行年龄的比较,就可以通过改返回值来进行比较。鼠标、
public interface IShape { public abstract void World(); void DrawOut();}public class Flower implements IShape{ @Override public void DrawOut() { System.out.println("画一朵花"); }}public class Main { public static void main(String[] args) { IShape iShape = new Flower();//通过向上转型来实例化 iShape.DrawOut(); }}
public void test(){ System.out.println("========");//Interface abstract methods cannot have body}default public void Hello(){ System.out.println("========");}
public abstract class Shape { public abstract void Draw();}public class Rect extends Shape{ @Override public void Draw() { System.out.println("画一个矩形"); }}public class Circle extends Shape{ @Override public void Draw() { System.out.println("画一个圆"); }}public class Flower extends Shape{ @Override public void Draw() { System.out.println("花一朵花"); }}
public class Main { public static void DrawOut(Shape picture){ picture.Draw(); } public static void main(String[] args) { Flower flower = new Flower(); DrawOut(flower); DrawOut(flower); DrawOut(flower); System.out.println("=========="); DrawOut(new Flower()); DrawOut(new Flower()); DrawOut(new Flower()); }}
public abstract void World();//warning:Modifier 'public''abstract' is redundant for interface membersvoid DrawOut();
2.4. 接口的使用
一个类要想与与接口建立联系,要使用implements实现。
public abstract class Animal { public int age; public String name; public abstract void eat(){//产生报错 System.out.println(this.name+"be eating");} public Animal(int age, String name) { this.age = age; this.name = name; }}public class Dog extends Animal{//产生报错 public Dog(int age, String name) { super(age, name); } }
//父类对象public abstract class Animal { public String name; public int age; public Animal(String name, int age) { this.name = name; this.age = age; } public abstract void eat();}//子类对象public class Dog extends Animal implements ICanRun, ICanSwim { public Dog(String name, int age) { super(name, age); } @Override public void eat() { System.out.println(this.name+"正在吃狗粮"); } @Override public void run() { System.out.println(this.name+"正在跑"); } @Override public void swim() { System.out.println(this.name+"正在游泳"); }}public class Bird extends Animal implements ICanFly{ public Bird(String name, int age) { super(name, age); } @Override public void eat() { } @Override public void fly() { System.out.println(this.name+"正在飞"); }}
public class Main { public static void Fly(ICanFly canFly){ canFly.fly(); } public static void Walk(ICanRun canRun){ canRun.run(); } public static void Swim(ICanSwim canSwim){ canSwim.swim(); } public static void main(String[] args) { Dog dog = new Dog("斯派克",4); Bird bird = new Bird("金丝雀",1); Duck duck = new Duck("小黄鸭",1); Walk(duck); Walk(dog); System.out.println("==========="); Swim(duck); Swim(dog); System.out.println("============"); Fly(bird); Fly(duck); }}
执行结果:
2.6. 工作当中常用的接口
(1)引用类型的比较
public class Student { public int age; public int score; public String name; public Student(int age, int score, String name) { this.age = age; this.score = score; this.name = name; } @Override public String toString() { return "Student{" + "age=" + age + ", score=" + score + ", name='" + name + ''' + '}'; }}public class Main { public static void main(String[] args) { Student student1 = new Student(10,74,"张三"); Student student2 = new Student(8,84,"李四"); if(student1 > student2)//报错:Operator '>' cannot be applied to 'Student', 'Student' Statement expected }}
<、但如果一个类没有被抽象,那么这个类中就不能有抽象方法。
1.3. 抽象类的特性
public abstract class Animal { public int age; public String name; public Animal(int age, String name) { this.age = age; this.name = name; } public void eat(){ System.out.println(this.name+"正在吃饭"); }}public class Dog extends Animal{ public Dog(int age, String name) { super(age, name); } @Override public void eat() { System.out.println(this.name+"正在吃狗粮"); }}public class Main { public static void main(String[] args) { Dog dog = new Dog(5,"泰克"); Animal animal = new Animal() }}