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
- a: Abstract classes and abstract methods must be modified with the abstract keyword
- 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("看家"); } }