当前位置:网站首页>Abstract classes and abstract methods

Abstract classes and abstract methods

2022-07-06 18:55:00 Youth should strive

Abstract classes and abstract methods

stay java in , Abstract classes cannot produce object instances . When defining abstractions , Need to use abstract keyword , grammar :

[ Permission modifier ] abstract class  Class name  {
    
     The class body 
}

Use abstract The defined classes are called abstract classes , Use abstract The defined methods are called abstract methods , grammar :

[ Permission modifier ] abstract  Method return value type   Method name ( parameter list );

example : Use abstract classes to simulate “ Go to the mall to buy clothes ” scene
Definition Market class

public abstract class Market {
    
	public String name; //  The name of the mall 
	public String goods; //  Name of commodity 

	public abstract void shop(); //  Abstract method , Used to output information 
}

Definition TaobaoMarket class

public class TaobaoMarket extends Market {
    
	public void shop() {
    
		System.out.println(name + " online shopping " + goods);
	}
}

Definition WallMarket class

public class WallMarket extends Market {
    
	public void shop() {
    
		System.out.println(name + " Physical store purchase " + goods);
	}
}

Definition GoShopping class

public class GoShopping {
    
	public static void main(String[] args) {
    
		Market market = new WallMarket(); //  Use derived class objects to create abstract class objects 
		market.name = " Wal-Mart ";
		market.goods = " Seven wolves suit ";
		market.shop();
		market = new TaobaoMarket(); //  Use derived class objects to create abstract class objects 
		market.name = " TaoBao ";
		market.goods = " Han Du Yi she flower skirt ";
		market.shop();
	}
}

The operation results are as follows :

 Wal Mart stores buy seven wolves suits 
 Taobao online shopping Han Du Yi she flower skirt 

Process finished with exit code 0

Parent object new Subclass object

Animal b = new Dog();

Above , object b Call the parent class attribute when calling the attribute , Put the object b Call methods of subclasses when calling methods .

class Animal{
    
}
class Dog extends Animal{
    
}
public class Test4 {
    

	public static void main(String[] args) {
    
		Animal a = new Animal();
		Animal b = new Dog();
		System.out.println(a instanceof Animal);
		System.out.println(a.getClass());
		System.out.println(b.getClass());
		// The method of the subclass is used first, so it calls the subclass getClass
		System.out.println(a.getClass() .equals(b.getClass()));
		
	}
}

 Operation result diagram

Dog b = new Dog();
Animal b = new Dog();

The results are the same , But there is a difference , have a look Use abstract classes to simulate “ Go to the mall to buy clothes ” scene , If you will Market market = new WallMarket(); Change to WallMarket market = new WallMarket();, The compiler will report an error , remember : This parent class has two subclasses .


Another example
Define a demo1 class :

package Demo;

public class demo1 {
    
    public static void main(String[] args) {
    
        Teacher Li = new English();
        Teacher Yang = new Math();
        Li.teaching();
        Yang.teaching();
    }
}

Define a Teacher class

package Demo;

public abstract class Teacher{
      // abstract class 
    abstract public void teaching();    // Abstract method 
}
class Math extends Teacher{
    
    @Override
    public void teaching() {
    
        System.out.println(" Let's talk about trigonometric functions !");
    }
}
class English extends Teacher{
    
    @Override
    public void teaching() {
    
        System.out.println("Good morning class!");
    }
}

The operation results are as follows :

Good morning class!
 Let's talk about trigonometric functions !

Process finished with exit code 0

Be careful : Abstract classes cannot be instantiated !

Teacher Li = new Teacher(); // The wrong way to write !

 Operation result diagram

The result of error reporting is as follows

java: Demo.Teacher It is abstract. ;  Cannot instantiate 

What's the use of knowing abstract classes !

原网站

版权声明
本文为[Youth should strive]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061047262058.html