Object-oriented abstraction (abstract)

Object-oriented abstraction (abstract)

An overview of abstract classes

  • A: Overview of abstract classes
    • abstraction is incomprehensible
  • B: abstract class features
    • a: Abstract classes and abstract methods must be modified with the abstract keyword
      • abstract class class name{}
      • public abstract void eat();
    • b: An abstract class does not necessarily have an abstract method, and a class with an abstract method must be an abstract class or an interface
    • c: Abstract classes cannot be instantiated So, how can abstract classes be instantiated?
      • In a polymorphic manner, instantiated by a concrete subclass. In fact, this is also a kind of polymorphism, abstract class polymorphism.
    • d: subclass of abstract class
      • Either an abstract class
      • Either override all abstract methods in abstract class
  • C: Case Demonstration
    • Abstract class features
Features of abstract class members
  • A: Member characteristics of abstract classes
    • a: member variable: either a variable or a constant. Can abstract modify member variables? Cannot modify member variables
    • b: Construction method: Yes.
      • Initialization for subclasses to access parent class data.
    • c: member method: can be either abstract or non-abstract.
  • B: Case Demonstration
    • Member characteristics of abstract classes
  • C: Member method characteristics of abstract classes:
    • a: An abstract method enforces something that subclasses do.
    • b: Non-abstract method subclass inheritance, improve code reuse.

Sunflower Collection of Abstract Classes

public class Test_葵花宝典 {

public static void main(String[] args) {
    岳不群  小岳子 = new 岳不群();
    小岳子.自宫();

}

}
abstract class 葵花宝典{  //可以了理解为 葵花宝典是抽象的武功
public abstract void 自宫();  //想要练成葵花宝典  必须自宫,由于自宫方法很多所以用到抽象方法
}

class 岳不群 extends 葵花宝典{
public void 自宫(){
    System.out.println("用牙签");
}   
}

class 林平之 extends 葵花宝典{
public void 自宫(){
    System.out.println("用指甲刀");
}
}

abstract cat and dog

  • Specific things: cats, dogs

    • Commonalities: name, age, meals
    • Cat's Trait: Catches mice
    • Dog Traits: Housekeeping

    public class Text_2{

    public static void main(String[] args) {
    
    Cat c = new Cat("加菲",8);
    System.out.println(c.getName()+ "..." + c.getAge());
    c.eat();
    c.catchMousr();
    
    Dog d = new Dog("八公",30);
    System.out.println(d.getName() + "..." + d.getAge());
    d.eat();
    d.lookHome();
    }
    }
    
    abstract class Animal{
    private String name;
    private int age;
    
    
    public Animal(){}
    
    public Animal(String name,int age){
        this.name = name;
        this.age = age;
    }
    public void setName(String name){ //设置姓名
        this.name =name;
    }
    public String getName(){   // 获取姓名
        return name;
    }
    public void setAge(int age){ //设置年龄
        this.age = age;
    }
    public int getAge(){  //获取年龄
        return age;
    }
    public abstract void eat(); // 吃饭      由于不同的动物的吃饭方法不同,所以这里定义吃饭这个方法为abstract方法,因此,Animal类亦应该定义为abstract类
    }
    
    
        class Cat extends Animal{
        public Cat(){}
    
        public Cat(String name,int age){
        super(name,age);
    }
    
    public void eat(){                                  //猫的吃饭法方法
        System.out.println("猫吃鱼");
    }
    public void catchMousr(){                    //猫的抓老鼠方法
        System.out.println("抓老鼠");
    }
    
    
    class Dog extends Animal{             
    public Dog(){}
    public Dog(String name,int age){
            super(name,age);
    }
    
    public void eat(){                                         //狗的吃饭法方法
        System.out.println("狗吃肉");
        }
    public void lookHome(){                              //狗的看家方法
    System.out.println("看家");
        }
        }
    

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324619468&siteId=291194637