Rumah  >  Artikel  >  Java  >  Cara menggunakan abstrak kata kunci Java

Cara menggunakan abstrak kata kunci Java

王林
王林ke hadapan
2023-05-11 15:01:061943semak imbas

1. Faham

abstract: abstrak

2. Fungsi

  • abstract boleh digunakan untuk mengubah suai kelas dan kaedah.

  • Anda tidak boleh menggunakan abstract untuk mengubah suai pembolehubah, blok kod dan pembina.

  • tidak boleh digunakan untuk mengubah suai kaedah peribadi, kaedah statik, kaedah abstract dan kelas final. final

3. Kelas diubah suai - kelas abstrak

  • Mesti ada pembina dalam kelas abstrak untuk memudahkan panggilan apabila subkelas dibuat instantiated (melibatkan : subkelas Keseluruhan proses instantiasi objek kelas).

  • Semasa pembangunan, subkelas kelas abstrak akan disediakan untuk membuat contoh objek subkelas dan menyelesaikan operasi berkaitan.

  • Kelas abstrak tidak boleh dibuat seketika. Kelas abstrak bertujuan untuk diwarisi Subkelas kelas abstrak mesti mengatasi kaedah abstrak kelas induk dan menyediakan badan kaedah. Jika semua kaedah abstrak tidak ditulis semula, ia masih merupakan kelas abstrak.

4. Kaedah yang diubah suai - kaedah abstrak

Kaedah abstrak hanya mempunyai pengisytiharan kaedah, tetapi tiada pelaksanaan kaedah. Diakhiri dengan koma bertitik.

public abstract void talk();

Kelas yang mengandungi kaedah abstrak mesti diisytiharkan sebagai kelas abstrak. Sebaliknya, tiada kaedah abstrak dalam kelas abstrak.

  • Subkelas ini hanya boleh digunakan sekiranya subkelas mengatasi semua kaedah abstrak dalam kelas induk.

  • Jika subkelas tidak mengatasi semua kaedah abstrak dalam kelas induk, maka subkelas itu juga merupakan kelas abstrak dan perlu diubah suai dengan

    . abstract

5. Demonstrasi kod

public class AbstractTest {
	public static void main(String[] args) {		
		//一旦Person类抽象了,就不可实例化
//		Person p1 = new Person();
//		p1.eat();		
	}
}
abstract class Creature{
	public abstract void breath();
}
abstract class Person extends Creature{
	String name;
	int age;	
	public Person(){		
	}
	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}	
	//不是抽象方法:
//	public void eat(){
//		
//	}
	//抽象方法
	public abstract void eat();	
	public void walk(){
		System.out.println("人走路");
	}		
}
class Student extends Person{	
	public Student(String name,int age){
		super(name,age);
	}
	public Student(){
	}	
	public void eat(){
		System.out.println("学生多吃有营养的食物");
	}
	@Override
	public void breath() {
		System.out.println("学生应该呼吸新鲜的没有雾霾的空气");
	}
}

6 soalan klasik

public class Test1 {
    public static void main(String args[]) {
        A a = new B();
        a.m1();//B类中定义的m1方法
        a.m2();//A类中定义的m2方法
    }
}
abstract class A {
    abstract void m1();
    public void m2() {
        System.out.println("A类中定义的m2方法");
    } 
}
class B extends A {
    void m1() {
        System.out.println("B类中定义的m1方法");
    } 
}

7 Subkelas tanpa nama bagi kelas abstrak

rreee

8. Aplikasi - Corak Reka Bentuk Kaedah Templat (TemplateMethod)

Kelas abstrak merangkumi reka bentuk corak templat Kelas abstrak berfungsi sebagai templat umum untuk berbilang subkelas, dan subkelas dilanjutkan dan diubah berdasarkan abstrak. class. , tetapi subkelas biasanya akan mengekalkan tingkah laku kelas abstrak.

Apabila sebahagian daripada pelaksanaan fungsi adalah deterministik, sebahagian daripada pelaksanaan tidak pasti. Pada masa ini, anda boleh mendedahkan bahagian yang tidak pasti dan membiarkan subkelas melaksanakannya.

Dalam erti kata lain, apabila melaksanakan algoritma dalam pembangunan perisian, langkah keseluruhan adalah tetap dan biasa, dan langkah-langkah ini telah pun ditulis dalam kelas induk. Walau bagaimanapun, sesetengah bahagian tidak menentu, dan bahagian yang tidak menentu boleh disarikan dan dilaksanakan oleh subkelas yang berbeza. Ini adalah corak templat.

Corak reka bentuk kaedah templat ialah corak yang kerap digunakan dalam pengaturcaraan. Ia mempunyai bayangannya dalam setiap rangka kerja dan perpustakaan kelas Contohnya, yang biasa ialah:

enkapsulasi akses pangkalan data

  • pengujian unit; Junit dalam 🎜>

  • ; program templat dalam

    JavaWebServletdoGet/doPost

    ; 🎜>
  • Hibernate dalam

    ,
  • , dll.;
  • Spring

    public class PersonTest {	
    	public static void main(String[] args) {	
    		//匿名对象		
    		method(new Student());
    		//非匿名的类非匿名的对象
    		Worker worker = new Worker();
    		method1(worker);
    		//非匿名的类匿名的对象
    		method1(new Worker());
    		//创建了一匿名子类的对象:p
    		Person p = new Person(){
    			@Override
    			public void eat() {
    				System.out.println("吃东西");
    			}
    			@Override
    			public void breath() {
    				System.out.println("好好呼吸");
    			}			
    		};		
    		method1(p);
    		//创建匿名子类的匿名对象
    		method1(new Person(){
    			@Override
    			public void eat() {
    				System.out.println("吃好吃东西");
    			}
    			@Override
    			public void breath() {
    				System.out.println("好好呼吸新鲜空气");
    			}
    		});
    	}		
    	public static void method1(Person p){
    		p.eat();
    		p.breath();
    	}	
    	public static void method(Student s){		
    	}
    }
    class Worker extends Person{
    	@Override
    	public void eat() {
    	}
    	@Override
    	public void breath() {
    	}	
    }

Atas ialah kandungan terperinci Cara menggunakan abstrak kata kunci Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam