继承方法版的猫与狗
main
package com.wang.API.DogAndCat;
public class AnimalDemo {
public static void main(String[] args) {
//创建猫类对象
Cat cat1 =new Cat();
cat1.setName("加菲");
cat1.setAge(1);
System.out.println(cat1.getName()+cat1.getAge());
cat1.catchMouth();
Cat cat2 = new Cat("美短",2);
System.out.println(cat2.getName()+cat2.getAge());
//狗类创建
Dog dog = new Dog("金毛",10);
System.out.println(dog.getName()+dog.getAge());
dog.lookDog();
}
}
父类 Animal类
package com.wang.API.DogAndCat;
public class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Dog类
package com.wang.API.DogAndCat;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
public void lookDog(){
System.out.println("狗看门");
}
}
Cat类
package com.wang.API.DogAndCat;
public class Cat extends Animal {
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
public void catchMouth(){
System.out.println("猫抓老鼠");
}
}
多态版的猫与狗
main类
package com.wang.API.DogAndCat2;
public class AnimalDemo {
public static void main(String[] args) {
//猫类
Animal cat1 = new Cat("加菲",5);
System.out.println(cat1.getName()+ cat1.getAge());
cat1.eat();
//狗类
Animal dog =new Dog("金毛",10);
System.out.println(dog.getName()+ dog.getAge());
dog.eat();
}
}
Animal类
package com.wang.API.DogAndCat2;
public class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("动物吃东西");
}
}
Cat类
package com.wang.API.DogAndCat2;
public class Cat extends Animal{
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
//重写父类中的eat方法
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
Dog类
package com.wang.API.DogAndCat2;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
抽象类
在Java中,一个没有方法体的方法被定义为抽象方法;而类中如果有抽象方法,那么该类必须被称为抽象类
抽象方法的创建
package com.wang.API.Demo.Demo1;
public abstract class Animal //抽象类 用abstract修饰
{
//抽像方法 用abstract修饰
public abstract void eat();
}
- 抽象方法必须在抽象类中,抽象类中可以不存在抽象方法
- 抽象类无法直接在main类中实例化,可以通过子类重写方法,从而实例化
- 如果一个子类继承了抽象类,要么重写父类中的所有抽象方法,要么其本身就是定义为一个抽象类
举例:
main类
package com.wang.API.Demo.Demo1;
public class Demo1 {
public static void main(String[] args) {
Animal a = new Cat();
a.eat();
}
}
Animal类
package com.wang.API.Demo.Demo1;
public abstract class Animal //抽象类 用abstract修饰
{
//抽像方法 用abstract修饰
public abstract void eat();
}
Cat类
package com.wang.API.Demo.Demo1;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
抽象类版本猫与狗
main类
package com.wang.API.DogAndCat3;
public class AnimalDemo {
public static void main(String[] args) {
//猫类测试
Animal cat1 = new Cat("布偶",2);
System.out.println(cat1.getName()+cat1.getAge());
cat1.eat();
//狗类测试
Animal dog1 = new Dog("金毛",10);
System.out.println(dog1.getName()+ dog1.getAge());
dog1.eat();
}
}
Animal类
package com.wang.API.DogAndCat3;
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
Cat类
package com.wang.API.DogAndCat3;
public class Cat extends Animal{
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
Dog类
package com.wang.API.DogAndCat3;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃肉");
}
}