zoukankan      html  css  js  c++  java
  • JAVA抽象类

    抽象方法的概念

     抽象方法主要指不能具体实现的方法并且使用abstract关键字修饰,也就 是没有方法体。

    具体格式如下:
            访问权限 abstract 返回值类型 方法名(形参列表); public abstract void cry();

    抽象类和抽象方法的关系

     1.抽象类中可以有成员变量、构造方法、成员方法;

    2. 抽象类中可以没有抽象方法,也可以有抽象方法;

    3.拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有 抽象方法并且使用abstract关键字修饰的类

    抽象类的实际意义

    • 抽象类的实际意义不在于创建对象而在于被继承。

    • 当一个类继承抽象类后必须重写抽象方法,否则该类也变成抽象类,也 就是抽象类对子类具有强制性和规范性,因此叫做模板设计模式。

    code demo:

    public  abstract class AbstractTest {
        private int cnt;
    
        public AbstractTest() {
        }
    
        public AbstractTest(int cnt) {
            setCnt(cnt);
        }
    
        public int getCnt() {
            return cnt;
        }
    
        public void setCnt(int cnt) {
            this.cnt = cnt;
        }
    
        // 自定义抽象方法
        public abstract void show();
    
    }
    public class SubAbstractTest2 extends AbstractTest {
        @Override
        public void show() {
            System.out.println("使用多态方式可以提高代码的可维护性哦!");
        }
    
        public void test() {
            System.out.println("第二个子类中独有的方法!");
        }
    }
    public class SubAbstractTest extends AbstractTest/*, Account*/ {
        @Override
        public void show() {
            System.out.println("其实我是被迫重写的,否则我也得变成抽象的呀!");
        }
    
        public static void main(String[] args) {
    
            // 1.声明本类类型的引用指向本类类型的对象,没有多态
            SubAbstractTest sat = new SubAbstractTest();
            sat.show();//调用SubAbstractTes中的show
    
            System.out.println("-------------------------------");
            // 2.声明AbstractTest类型的引用指向子类的对象,形成了多态
            // 多态的使用场合之二: 直接在方法体中使用抽象类的引用指向子类类型的对象
            AbstractTest at = new SubAbstractTest2();
            // 编译阶段调用父类版本,运行阶段调用子类版本
            at.show();
            ((SubAbstractTest2) at).test();
    
            System.out.println("-------------------------------");
            SubAbstractTest2 sat2 = new SubAbstractTest2();
            sat2.test();
        }
    }
  • 相关阅读:
    Codeforces Round #398 (Div. 2) B,C
    KMP模板
    HDU1711 KMP(模板题)
    HDU3265 线段树(扫描线)
    HDU2795 线段树
    HDU1828线段树(扫描线)
    HDU1832 二维线段树求最值(模板)
    HDU1698 线段树(区间更新区间查询)
    HDU3251 最大流(最小割)
    cf2.c
  • 原文地址:https://www.cnblogs.com/goldenwangyi/p/15072041.html
Copyright © 2011-2022 走看看