java中的抽象类

清疚 2022-04-22 05:38 418阅读 0赞

java中的抽象类

1.什么是抽象类?

类—通过class关键字创建的java元素。描述具有公共性质的一组事物的自定义复合数据类型。

/**

* 普通的java类

* @author Administrator

*/

public class Person {

}

抽象类—通过使用abstract 修饰的普通的java类就是抽象类。

package com.click369.test.demo1;

/**

* 抽象类

* @author Administrator

*/

public abstract class TestClass {

}

2.为什么要有抽象类?

通常情况下我们在编写一个程序的时候需要使用很多的java类,可能这些众多的java类中都具有一些相似的属性或者动作,我们在编写这些众多的java类的时候,把这些个相似的属性或者动作在每一个类中都要编写一次,无形中就造成类中大量代码的重复使用。这个时候我们可能不想把这个相似的属性或者动作在很多的java类中重复出现,那么我们就会创造一个抽象类,把这些相似的属性或者动作编写到这个抽象类中,然后让需要的java类去继承一下这抽象类,那么java类中就有了相似的属性或者动作的java代码。此时我们实际上是将这些相似的属性或者动作书写类一次,减少了大量代码的重复使用。继承抽象类的java类他们可以根据自己的需要来修改一个这个相似的属性或者动作的具体实现过程就OK.

3.抽象类的作用?

减少代码的重复使用。

本质—定义了一组可以由子类共享的一般形式,子类可以根据自己的实际情况去实现这个共享的一般形式。

4.抽象类中的元素

抽象类———类———-变量/方法

1.定义在抽象类中的变量和方法的访问修饰符一般都是public / protected ,因为抽象类中的元素往往是需要被子类继承的,如果我们定义成private/缺省的 那么将来是无法被继承的,就是会失去意义。

2.抽象类中定义实例变量,类变量,构造方法,实例方法,类方法,抽象方法

抽象方法—1.通过abstract 关键字修饰

2.没有方法体【{}】—- 没有具体实现的细节—-让子类去根据自己的实际情况给出实现细节

3.抽象类中可以有抽象方法【多个/重载】,也可以一个抽象方法都没有。

4.拥有抽象方法的类一定是抽象类。

例如:

package com.click369.test.demo1;

/**

* 抽象类

* @author Administrator

*/

public abstract class TestClass {

//实例变量

public int testid=1001;

protected String testname=”zhangsan”;

//类变量

public static int test_static_id=1002;

protected static String test_static_name=”lisi”;

public TestClass(){

System.out.println(“抽象类的构造方法”);

}

public void testMethod(){

System.out.println(“抽象类的实例方法”);

}

public static void test_StaticMethod(){

System.out.println(“抽象类的类方法”);

}

//抽象方法

public abstract void test_abstract_method();

//抽象方法

public abstract void test_abstract_method(int num);

}

5.抽象类是不能通过new创建出java对象的。我们通常都是利用上转型对象来充当抽象类的对象。

上转型对象—-子类的对象赋值给父类的变量。【构造出抽象类的子类】

例如:

package com.click369.test.demo1;

/**

* 普通的java类

* @author Administrator

*/

public class Person extends TestClass {

public void test_abstract_method() {

System.out.println(“被子类重写的抽象方法”);

}

public void test_abstract_method(int num) {

System.out.println(“被子类重写的有参数的抽象方法”);

}

}

package com.click369.test.demo1;

public class TestMain {

public static void main(String[] args) {

//TestClass tc=new TestClass(); //抽象类不能new

//通过上转型对象构造出抽象类的对象【抽象类的构造方法会执行】

TestClass tc=new Person();

//通过得到的抽象类的对象【上转型对象】访问抽象类中的实例变量

System.out.println(“testid==”+tc.testid);

System.out.println(“testname==”+tc.testname);

//通过得到的抽象类的对象【上转型对象】访问抽象类中的实例方法

tc.testMethod();

//通过得到的抽象类的对象【上转型对象】访问由子类重写以后的抽象方法

tc.test_abstract_method();

tc.test_abstract_method(100);

//通过抽象类的类名访问抽象类中的类变量

System.out.println(“test_static_id==”+TestClass.test_static_id);

System.out.println(“test_static_name==”+TestClass.test_static_name);

//通过抽象类的类名访问抽象类中的类方法

TestClass.test_StaticMethod();

}

}

6.当一个普通的java类继承了一个抽象类,此时这个普通的java类有错误:

1.将这个普通的java类改成抽象类

public abstract class Person extends TestClass {

2.在这个普通的java类中重写抽象类中的抽象方法【1.去掉abstract 2.添加方法体】

package com.click369.test.demo1;

/**

* 普通的java类

* @author Administrator

*/

public class Person extends TestClass {

public void test_abstract_method() {

}

public void test_abstract_method(int num) {

}

}

7.当一个方法的参数是抽象类类型的时候:

1.可以传递继承该抽象类的子类对象作为参数

2.传递上转型对象作为参数

8.抽象类可以继承抽象类,普通的类可以继承抽象类,抽象类可以继承普通的Java类.

发表评论

表情:
评论列表 (有 0 条评论,418人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA抽象

    一、介绍 Java中提供了两种类:具体类和抽象类。 1、abstract意思为“抽象的”,用abstract关键字来修饰一个类时,这个类就叫做抽象类。 语法:访问修饰

    相关 Java抽象

    一、抽象类定义 Java语言提供了两种类:具体类和抽象类 在Java中,abstract是抽象的意思,可以修饰类,成员方法 abstract修饰类,就是抽象类,abs

    相关 Java抽象方法抽象

    1、 普通方法和抽象方法的区别 (1)在Java中,当一个类的方法被abstract关键字修饰时,该方法称为抽象方法。 (2)抽象方法所在的类必须定义为抽象类。 (3

    相关 java 抽象

    在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象。从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对

    相关 java抽象抽象方法

    使用关键字abstract定义的类叫做抽象类,在抽象类中可以包含抽象方法也可以不包含抽象方法,这意味着你在抽象类里边可以有具体的方法(有实现体)也可以有抽象方法(没有实现,没有

    相关 Java抽象

    抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的

    相关 java抽象

    java中的抽象类 1.什么是抽象类? 类--通过class关键字创建的java元素。描述具有公共性质的一组事物的自定义复合数据类型。 /\\ \ 普通的java